Automated generation of variant programming tasks using large language models
Abstract
Programmering har utelukkende økt i populartitet siden det oppstod. Flere og flere studenter melder seg på introduksjonskurs i programmering, noe som fører til en dramatisk økning i ressursbehovet fra fakulter for å sikre god utdanning. Den økte studentmassen drar med seg økte krav til forelesere, som må bruke mer av sin tilgjengelige tid på å evaluere innleveringer og lage øvinger, istedenfor å hjelpe studenter. En løsning på dette problemet er å automatisk generere variantoppgaver til bruk både i øvinger og eksamener.
Målet med denne avhandlingen var å designe og lage en prototype for generering av variantoppgaver beregnet på digitale programmeringseksamener og øvingsoppgaver. Masteroppgaven evaluerer også hvordan prototypen oppleves, både med hensyn til oppfattet brukervennlighet hos professorer og andre i fagstab, og et utvalg studenters oppfattelse av de genererte variantoppgavene. Systemet benytter seg av store språkmodeller utviklet av OpenAI som tilhører deres GPT-rekke av modeller. Systemet har som mål å øke effektiviteten i emner ved å automatisere oppgaveskapning i stor skala, samt å tilgjengeliggjøre kreativiteten som er å finne i store språkmodeller for fagstaben.
Avhandlingen har sitt utspring i en prosjektoppgave, der det en prototype for å generere varianter av programmeringsoppgaven be utviklet. Etter å ha utviklet den nevnte prototypen og undersøkt svakhetene ved et slikt system, endret prosjektet retning til å benytte seg av nye og moderne språkmodeller i håp om å gi bedre resultater. Gjennom iterativ utvikling og sluttbrukertesting ble systemet vurdert til å ha noen fordeler i forhold til å lage programmeringsoppgaver manuelt, og til å være et effektivt hjelpemiddel for å lage programmeringsoppgaver som en kan bygge videre på. Systemet har flere mangler, men som prototype er det lovende og skisserer en fremtid der store språkmodeller kan brukes til å pålitelig generere kreative variantoppgaver som oppfordrer til læring. Programming as a discipline has seen an increase in popularity ever since its inception. More and more students enroll in introductory programming courses, leading to an increase in resources needed by faculties to ensure effective education. Following the increase in student mass, lecturers find themselves spending more of their available time grading and creating exercises for students. One way of making introductory CS courses more efficient is to automatically generate variant tasks for use in both coursework and exams.
The aim of this thesis was to design and create a prototype for programming variant task generation meant for digital programming coursework. The thesis also evaluates the effect of this prototype, in regards to perceived usability by professors and other teaching staff, and students input regarding the generated variant tasks. The system makes use of large language models from OpenAI's GPT line, and seeks to increase efficiency in courses by automating task creation on a large scale, and provide teaching staff with creativity powered by large language models.
The thesis is rooted in a pre-master project, in which a prototype not powered by AI was built to generate programming task variants. After developing said prototype and examining the flaws of such a system, the project pivoted to make use of recent language model improvements in the hopes of providing better results. The thesis considers several task types, and several ways of generating meaningful tasks. Through iterative development and end user testing, an assessment of the system deemed it to have some advantages over manually creating programming tasks, and to be an effective aid in creating programming tasks to further expand upon. There are several shortcomings of the system, but as a prototype it shows promise and outlines a future where large language models can be used to reliably generate creative variant tasks that fosters learning.