18 research outputs found

    Generating SQL queries from visual specifications

    Get PDF
    Abstract: Structured Query Language (SQL) is the most widely used declarative language for accessing relational databases, and an essential topic in introductory database courses in higher learning institutions. Despite the intuitiveness of SQL, formulating and comprehending written queries can be confusing, especially for undergraduate students. One major reason for this is that the simple syntax of SQL is often misleading and hard to comprehend. A number of tools have been developed to aid the comprehension of queries and improve the mental models of students concerning the underlying logic of SQL. Some of these tools employed visualisation and animation in their approach to aid the comprehension of SQL. This paper presents an interactive comprehension aid based on visualisation, specifically designed to support the SQL SELECT statement, an area identified in the literature as problematic for students. The visualisation tool uses visual specifications depicting SQL operations to build queries. This is expected to reduce the cognitive load of a student who is learning SQL. We have shown with an online survey that adopting visual specifications in teaching systems assist students in attaining a richer learning experience in introductory database courses

    Utilizing educational technology in computer science and programming courses : theory and practice

    Get PDF
    There is one thing the Computer Science Education researchers seem to agree: programming is a difficult skill to learn. Educational technology can potentially solve a number of difficulties associated with programming and computer science education by automating assessment, providing immediate feedback and by gamifying the learning process. Still, there are two very important issues to solve regarding the use of technology: what tools to use, and how to apply them? In this thesis, I present a model for successfully adapting educational technology to computer science and programming courses. The model is based on several years of studies conducted while developing and utilizing an exercise-based educational tool in various courses. The focus of the model is in improving student performance, measured by two easily quantifiable factors: the pass rate of the course and the average grade obtained from the course. The final model consists of five features that need to be considered in order to adapt technology effectively into a computer science course: active learning and continuous assessment, heterogeneous exercise types, electronic examination, tutorial-based learning, and continuous feedback cycle. Additionally, I recommend that student mentoring is provided and cognitive load of adapting the tools considered when applying the model. The features are classified as core components, supportive components or evaluation components based on their role in the complete model. Based on the results, it seems that adapting the complete model can increase the pass rate statistically significantly and provide higher grades when compared with a “traditional” programming course. The results also indicate that although adapting the model partially can create some improvements to the performance, all features are required for the full effect to take place. Naturally, there are some limits in the model. First, I do not consider it as the only possible model for adapting educational technology into programming or computer science courses. Second, there are various other factors in addition to students’ performance for creating a satisfying learning experience that need to be considered when refactoring courses. Still, the model presented can provide significantly better results, and as such, it works as a base for future improvements in computer science education.Ohjelmoinnin oppimisen vaikeus on yksi harvoja asioita, joista lähes kaikki tietojenkäsittelyn opetuksen tutkijat ovat jokseenkin yksimielisiä. Opetusteknologian avulla on mahdollista ratkaista useita ohjelmoinnin oppimiseen liittyviä ongelmia esimerkiksi hyödyntämällä automaattista arviointia, välitöntä palautetta ja pelillisyyttä. Teknologiaan liittyy kuitenkin kaksi olennaista kysymystä: mitä työkaluja käyttää ja miten ottaa ne kursseilla tehokkaasti käyttöön? Tässä väitöskirjassa esitellään malli opetusteknologian tehokkaaseen hyödyntämiseen tietojenkäsittelyn ja ohjelmoinnin kursseilla. Malli perustuu tehtäväpohjaisen oppimisjärjestelmän runsaan vuosikymmenen pituiseen kehitys- ja tutkimusprosessiin. Mallin painopiste on opiskelijoiden suoriutumisen parantamisessa. Tätä arvioidaan kahdella kvantitatiivisella mittarilla: kurssin läpäisyprosentilla ja arvosanojen keskiarvolla. Malli koostuu viidestä tekijästä, jotka on otettava huomioon tuotaessa opetusteknologiaa ohjelmoinnin kursseille. Näitä ovat aktiivinen oppiminen ja jatkuva arviointi, heterogeeniset tehtävätyypit, sähköinen tentti, tutoriaalipohjainen oppiminen sekä jatkuva palautesykli. Lisäksi opiskelijamentoroinnin järjestäminen kursseilla ja järjestelmän käyttöönottoon liittyvän kognitiivisen kuorman arviointi tukevat mallin käyttöä. Malliin liittyvät tekijät on tässä työssä lajiteltu kolmeen kategoriaan: ydinkomponentteihin, tukikomponentteihin ja arviontiin liittyviin komponentteihin. Tulosten perusteella vaikuttaa siltä, että mallin käyttöönotto parantaa kurssien läpäisyprosenttia tilastollisesti merkittävästi ja nostaa arvosanojen keskiarvoa ”perinteiseen” kurssimalliin verrattuna. Vaikka mallin yksittäistenkin ominaisuuksien käyttöönotto voi sinällään parantaa kurssin tuloksia, väitöskirjaan kuuluvien tutkimusten perusteella näyttää siltä, että parhaat tulokset saavutetaan ottamalla malli käyttöön kokonaisuudessaan. On selvää, että malli ei ratkaise kaikkia opetusteknologian käyttöönottoon liittyviä kysymyksiä. Ensinnäkään esitetyn mallin ei ole tarkoituskaan olla ainoa mahdollinen tapa hyödyntää opetusteknologiaa ohjelmoinnin ja tietojenkäsittelyn kursseilla. Toiseksi tyydyttävään oppimiskokemukseen liittyy opiskelijoiden suoriutumisen lisäksi paljon muitakin tekijöitä, jotka tulee huomioida kurssien uudelleensuunnittelussa. Esitetty malli mahdollistaa kuitenkin merkittävästi parempien tulosten saavuttamisen kursseilla ja tarjoaa sellaisena perustan entistä parempaan opetukseen

    Fostering Program Comprehension in Novice Programmers - Learning Activities and Learning Trajectories

    Get PDF
    This working group asserts that Program Comprehension (ProgComp) plays a critical part in the process of writing programs. For example, this paper is written from a basic draft that was edited and revised until it clearly presented our idea. Similarly, a program is written incrementally, with each step tested, debugged and extended until the program achieves its goal. Novice programmers should develop program comprehension skills as they learn to code so that they are able both to read and reason about code created by others, and to reflect on their code when writing, debugging or extending it. To foster such competencies our group identified two main goals: (g1) to collect and define learning activities that explicitly address key components of program comprehension and (g2) to define tentative theoretical learning trajectories that will guide teachers as they select and sequence those learning activities in their CS0/CS1/CS2 or K-12 courses. The WG has completed the first goal and laid down a strong foundation towards the second goal as presented in this report. After a thorough literature review, a detailed description of the Block Model is provided, as this model has been used with a dual purpose, to classify and present an extensive list of ProgComp tasks, and to describe a possible learning trajectory for a complex task, covering different cells of the Block Model matrix. The latter is intended to help instructors to decompose complex tasks and identify which aspects of ProgComp are being fostered

    Ohjelmoinnin opetus ja sähköinen tentti yliopiston ensimmäisillä ohjelmointikursseilla

    Get PDF
    Ohjelmoinnin opetuksen yliopistotasolla on todettu olevan vaikeaa. Ensimmäiset ohjelmointikurssit kärsivät maailmanlaajuisesti suurista keskeytysprosenteista ja huonoista tuloksista. Miesvaltaisella alalla naiset ovat vähemmistössä, syystä josta ei ole täyttä varmuutta ja lisäksi tasoerot ensimmäisillä ohjelmointikursseilla ovat suuria. Lääkkeeksi ensimmäisten ohjelmointikurssien suuriin keskeytysprosentteihin on kehitetty erilaisia vaihtoehtoja. Erilaisia opetustyylejä kuten flipped classroom, pariohjelmointi ja aktiivinen oppiminen on ehdotettu ratkaisuiksi. Muutetuista opetustyyleistä on myös saatu hyviä tuloksia. Ajavana voimana on kuitenkin todettu olevan muutos itse kurssissa ja opettajan halu parantaa ohjelmoinnin opetusta. Oppimisjärjestelmät ovat myös käytössä osassa ohjelmoinnin kursseista. Nämä oppimisjärjestelmät osaltaan auttavat ohjelmoinnin opetuksessa mm. automaattisen arvioinnin myötä ja keventävät näin opettajien työtaakkaa. Tässä didaktisen tietotekniikan tutkielmassa perehdytään ensin yleisellä tasolla tapoihin opettaa ohjelmointia sekä asioihin, jotka vaikuttavat ohjelmoinnin opiskeluun, kuten motivaatio ja kognitiiviset taidot. Tarkastellaan myös tapoja arvioida oppimistuloksia joko kirjoitetussa, suullisessa tai ryhmätyön muodossa. Arviointitavan ollessa mikä vain, voidaan käyttää sähköistä tenttiä lopullisessa arvioinnissa. Etenkin ohjelmoinnissa sähköinen tentti on olennainen, sillä ohjelmointi tapahtuu luontaisesti tietokoneella. Tutkittaessa Turun yliopiston ensimmäistä ohjelmointikurssia saatiin tulokseksi, että opiskelijat suorittavat ohjelmoinnin tentin erittäin mielellään tietokoneella, ja että kurssiaktiivisuudella on ainakin lievä vaikutus tenttituloksiin. Yleisesti käytettyyn oppimisjärjestelmään oltiin tyytyväisiä ja opiskelijat kokivat kurssin onnistuneeksi. Lisäksi kokonaisvaltainen oppimisjärjestelmän käyttö läpi kurssin, tenttiä myöten, on osaltaan poistanut mahdollista ahdistusta uuden järjestelmän opiskelusta. Ainoat ongelmat aiheutuivat järjestelmän suuresta kuormituksesta tentin aikana

    INTERACTIVE PROGRAMMING SUPPORT FOR SECURE SOFTWARE DEVELOPMENT

    Get PDF
    Software vulnerabilities originating from insecure code are one of the leading causes of security problems people face today. Unfortunately, many software developers have not been adequately trained in writing secure programs that are resistant from attacks violating program confidentiality, integrity, and availability, a style of programming which I refer to as secure programming. Worse, even well-trained developers can still make programming errors, including security ones. This may be either because of their lack of understanding of secure programming practices, and/or their lapses of attention on security. Much work on software security has focused on detecting software vulnerabilities through automated analysis techniques. While they are effective, they are neither sufficient nor optimal. For instance, current tool support for secure programming, both from tool vendors as well as within the research community, focuses on catching security errors after the program is written. Static and dynamic analyzers work in a similar way as early compilers: developers must first run the tool, obtain and analyze results, diagnose programs, and finally fix the code if necessary. Thus, these tools tend to be used to find vulnerabilities at the end of the development lifecycle. However, their popularity does not guarantee utilization; other business priorities may take precedence. Moreover, using such tools often requires some security expertise and can be costly. What is worse, these approaches exclude programmers from the security loop, and therefore, do not discourage them from continuing to write insecure code. In this dissertation, I investigate an approach to increase developer awareness and promoting good practices of secure programming by interactively reminding program- mers of secure programming practices in situ, helping them to either close the secure programming knowledge gap or overcome attention/memory lapses. More specifi- cally, I designed two techniques to help programmers prevent common secure coding errors: interactive code refactoring and interactive code annotation. My thesis is that by providing reminder support in a programming environment, e.g. modern IDE, one can effectively reduce common security vulnerabilities in software systems. I have implemented interactive code refactoring as a proof-of-concept plugin for Eclipse (32) and Java (57). Extensive evaluation results show that this approach can detect and address common web application vulnerabilities and can serve as an effective aid for programmers in writing secure code. My approach can also effectively complement existing software security best practices and significantly increase developer productivity. I have also implemented interactive code annotation, and conducted user studies to investigate its effectiveness and impact on developers’ programming behaviors and awareness towards writing secure code

    Understanding novice programmer behavior on introductory courses - Learning analytics approach

    Get PDF
    It is not easy to learn programming. This is why increasing theoretical and practical knowledge in programming education benefits both the educators as well as the students. To allow the students to gain maximal benefit from their studies, the educator must be able to recognize the students who are struggling with learning programming. Learning analytics provides a possible solution to this problem. This thesis demonstrates a novel method to model programmer behavior by using Markov Models. Programming fulfills the Markov property, because the success of the next attempt to compile or execute code is not influenced by the previous attempts; only by the current skill level of the programmer. The model is built using a state machine, which consists of states representing the different phases of the programming process. The state machine contains eight different states and 29different state transition possibilities. A Markov chain corresponding to a specific student can be computed using this state machine and then used with, for example machine learning algorithms. The data for this thesis was collected from a total of five different introductory programming courses, which used either the Java or Python programming languages. The dataset contains 1174 unique students, who made 544 835 total submissions to411 unique assignments. All programming courses were given in Turku, during2017-2021.This thesis provides a theoretical basis for modeling students (Markov Models) and offers a practical method to model students using Markov Models. This thesis only applies unsupervised machine learning methods to the data, specifically the K-Means clustering algorithm. However, supervised methods may also be used. The usefulness of the model is demonstrated by clustering students into three statistically similar clusters: students who perform well, average and poorly. The model is also applied to recognize the programming language used, based only on the transitions within the state machine.--- Ohjelmoinnin oppiminen ei ole helppoa. Tästä syystä ohjelmoinnin opetuksenteoreettinen ja käytännön edistäminen hyödyttää paitsi nykyisin ohjelmointia opettavia, myös opiskelijoita. Jotta opiskelijat voivat saavuttaa maksimaalisenhyödyn opiskelustaan, opettajan täytyy voida tunnistaa ne opiskelijat, joille ohjelmoinnin opiskelu tuottaa hankaluuksia. Oppimisanalytiikka tarjoaa tähän mahdollisuuden. Tämä väitöskirja esittelee tavan mallintaa ohjelmoinnin opiskelijoidenkäyttäytymistä käyttämällä Markovin malleja. Ohjelmoijan käyttäytyminen toteuttaa Markovin ominaisuuden, sillä ohjelmoijan koodin ajoyrityksen onnistumiseen vaikuttaa ainoastaan ohjelmoijan senhetkinen taitotaso; aikaisemmilla yrityksillä ei ole vaikutusta tuleviin kertoihin. Malli rakennetaan käyttämällä tilakonetta, jonka jokainen tila vastaa ohjelmointiprosessin vaihetta. Tilakoneessa on yhteensä kahdeksan eri tilaa ja 29 erilaista tilan muutosmahdollisuutta. Tilakoneesta lasketaan opiskelijaa vastaava Markovin ketju, mitä voidaan käyttää esimerkiksi koneoppimisalgoritmien kanssa. Dataa tähän väitöskirjaan kerättiin yhteensä viidestä ohjelmoinninperuskurssista, joissa käytettiin joko Java- tai Python-ohjelmointikieltä. Opiskelijoita kursseilla oli yhteensä 1174. Opiskelijat tekivät yhteensä 544-835 ohjelmointitehtävän palautusta 411 ohjelmointitehtävään. Kaikki ohjelmointikurssit pidettiin Turussa, vuosina 2017-2021 Tämä väitöskirja tarjoaa teoreettisen pohjan ohjelmoinnin opiskelijoidenmallintamiseen (Markovin mallit) ja tarjoaa menetelmän, jolla Markovin malleja käyttämällä voi mallintaa ohjelmoinnin opiskelijoita. Malliin sovelletaan vain ohjaamattomia koneoppimismenetelmiä, erityisesti K-Means clustering -algoritmia. Tässä väitöskirjassa osoitan myös teoreettisen mallin muutamia käytännönsovelluksia luokittelemalla opiskelijoita samoja ominaisuuksia sisältäviin luokkiin. Malli opetetaan erottelemaan opiskelijat kolmeen ryhmään: hyvin, keskiverrosti ja huonosti pärjääviin. Mallia sovelletaan onnistuneesti myös tunnistamaan käytetty ohjelmointikieli käyttämällä vain tilakoneen tilasiirtymiä

    Introductory programming: a systematic literature review

    Get PDF
    As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming. This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research

    Comparing importance of knowledge and professional skill areas for engineering programming utilizing a two group Delphi survey

    Get PDF
    All engineering careers require some level of programming proficiency. However, beginning programming classes are challenging for many students. Difficulties have been well-documented and contribute to high drop-out rates which prevent students from pursuing engineering. While many approaches have been tried to improve the performance of students and reduce the dropout rate, continued work is needed. This research seeks to re-examine what items are critical for programming education and how those might inform what is taught in introductory programming classes (CS1). Following trends coming from accreditation and academic boards on the importance of professional skills, we desire to rank knowledge and professional skill areas in one list. While programming curricula focus almost exclusively on knowledge areas, integrating critical professional skill areas could provide students with a better high-level understanding of what engineering encompasses. Enhancing the current knowledge centric syllabi with critical professional skills should allow students to have better visibility into what an engineering job might be like at the earliest classes in the engineering degree. To define our list of important professional skills, we use a two-group, three-round Delphi survey to build consensus ranked lists of knowledge and professional skill areas from industry and academic experts. Performing a gap analysis between the expert groups shows that industry experts focus more on professional skills then their academic counterparts. We use this resulting list to recommend ways to further integrate professional skills into engineering programming curriculum

    Java-Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach

    Get PDF
    International audienceIn this paper, we introduce a new Eclipse-based IDE for teaching Java following the object-later approach. Inparticular, this IDE allows the programmer to write code in Java--, a smaller version of the Java language thatdoes not include object-oriented features. For the implementation of this language we used Xtext, an Eclipseframework for implementing Domain Specific Languages; besides the compiler mechanisms, Xtext also allowsto easily implement all the IDE tooling mechanisms in Eclipse. By using Xtext we were able to provide animplementation of Java-- with all the powerful features available when using an IDE like Eclipse (includingdebugging, automatic building, and project wizards). With our implementation, it is also straightforward tocreate self-assessment exercises for students, which are integrated in Eclipse and JUnit

    Feedback 2.0: An Investigation into Using Sharable Feedback Tags as Programming Feedback

    Get PDF
    Objectives: Learning and teaching computer programming is a recognised challenge in Higher Education. Since feedback is regarded as being the most important part of the learning process, it is expected that improving it could support students' learning. This thesis aims to investigate how new forms of feedback can improve student learning of programming and how feedback sharing can further enhance the students' learning experience. Methods: This thesis investigates the use of new forms of feedback for programming courses. The work explores the use of collaborative tagging often found in Web 2.0 software systems and a feedback approach that requires examiners to annotate students source code with short, potentially reusable feedback. The thesis utilises a variety of research methods including questionnaires, focus groups and collection of system usage data recorded from student interactions with their feedback. Sentiment and thematic analysis are used to investigate how well feedback tags communicate the intended message from examiners to students. The approaches used are tested and refined over two preliminary investigations before use in the final investigation. Results: The work identified that a majority of students responded positively to the new feedback approach described. Student engagement was high with up to 100% viewing their feedback and at least 42% of students opting to share their feedback. Students in the cohort who achieved either the lower or higher marks for the assignment appeared more likely to share their feedback. Conclusions: This thesis has demonstrated that sharing of feedback can be useful for disseminating good practice and common pitfalls. Provision of feedback which is contextually rich and textually concise has resulted in higher engagement from students. However, the outcomes of this research have been shown to be influenced by the assessment process adopted by the University. For example, students were more likely to engage with their feedback if marks are unavailable at the time of feedback release. This issue and many others are proposed as further work
    corecore