Generating program tracing exercises for introductory programming courses
Abstract
Programmering har de siste årene blitt mer og mer populært, som et resultat har førsteårs-programmringskurs fått en betydelig økning i antall studenter. Med den økte studentmassen kommer en økning i arbeidsmengden for professorene, foreleserne og undervisningsassistentene som er ansvarlige for kursene. De må bruke stadig mer tid på å rette øvinger, i stedet for å hjelpe studentene. En løsning på dette problemet er å både generere og rette øvinger automatisk.
Denne masteroppgaven ser på to ulike teknikker for å generere kodeforståelsesoppgaver på ved hjelp av maler: CFG og SCT teknikkene, og implementerer CFG teknikken i en fungerende prototype. Gjennom iterative evalueringer og en avsluttende test ble egnetheten til CFG teknikken evaluert. Analysen av resultatene viser flere fordeler med CFG i forhold til SCT, som hovedsakelig ligger i mulighetene for generering av mer avanserte og spennende oppgaver. Flere ulemper med teknikken ble også identifisert, blant annet at det kreves en stor mengde grunnarbeid for å sette opp et malspråk, i tillegg til begrensninger for generering av øvinger for flere forskjellige programmeringsspråk. Fordelene oppveier imidlertid ulempene, som indikerer at CFG teknikken er en god tilnærming for auto-generering av kodeforståelsesoppgaver. Due to programming being more and more popular, CS1 courses are becoming more prominent. With the increased student mass, comes an increase in workload for the professors, lecturers, and teaching assistants responsible for the courses. They have to spend an increasing amount of time correcting exercises, rather than helping the students. A solution to this problem is to generate exercises and auto-correct them.
This thesis looks at two ways of generating program tracing exercises using templates, namely the CFG and the SCT approaches, and implements the CFG approach into a working prototype. Through iterative evaluations and a final test, the suitability of the CFG approach was evaluated. The analysis of the results suggests several advantages over the SCT approach, mainly by allowing for more advanced and exciting exercises to be generated. Several drawbacks with the technique were identified, including a large amount of boilerplate work required to set up and constraints on generating exercises for different target languages. However, the advantages outweigh the drawbacks, indicating that the CFG approach is a good technique for auto-generating program tracing exercises.