Automatische beoordeling van programmeeroplossingen

Download Report

Transcript Automatische beoordeling van programmeeroplossingen

Automatische beoordeling van programmeeroplossingen
Promotor: prof. dr. Peter Dawyndt (WE02)
Context: Beeld je in dat je een examen programmeren moet afleggen. In plaats van op het einde je oplossingen af
te geven en pas weken later van een professor je score te krijgen, klik je op de knop verzenden als je klaar bent met
een programmeeropgave en krijg je ogenblikkelijk je score te zien na beoordeling van je programmacode door . . . een
ander programma. Je bent dan ook nog niet klaar met het examen, maar krijgt de kans om je programma verder
te herschrijven, optimaliseren en uit te testen om zo te proberen een nog hogere score te behalen. Het systeem dat
de broncode analyseert gebruikt artifici¨ele intelligentie en machine learning technieken om een evaluatie te maken van
de correctheid, programmeerstijl, snelheid, geheugenvereisten en andere programmastatistieken. Niet alleen om een objectieve beoordeling te geven maar om je ook van de nodige feedback te voorzien waarop je je verbeteringen kunt baseren.
Dergelijke systemen die doorgedreven automatisering introduceren in het onderwijs, maken sterk hun opgang en voeden
tegelijkertijd de discussie over de nieuwe rol van lesgevers in een moderne educatieve context. Automatische beoordeling
op basis van multiple choice testen of juist-of-fout vragen zijn dan al wijdverspreid, het gebruik van intelligente systemen
voor de beoordeling van programmacode heeft nog heel wat minder voet aan de grond gekregen in het onderwijs en
wordt ook door heel wat critici op de korrel genomen.
Doelstelling: Ondanks het feit dat de technologie voor het automatisch beoordelen en aanleveren van feedback op programmeeroplossingen nog in zijn kinderschoenen staan, ben ik er echter van overtuigd dat het op punt stellen daarvan
heel wat potentieel heeft. We hebben vanuit de vakgroep Toegepaste Wiskunde en Informatica de afgelopen twee academiejaren binnen een opleidingsonderdeel programmeren voor de opleidingen Chemie, Geologie, Geografie, Biochemie
& Biotechnologie een eerste stap gezet naar het introduceren van een online leerplatform dat dag en nacht klaarstaat
voor de studenten om feedback te geven op ingediende programmeeroplossingen (http://www.spoj.com/PROGPY). De
aangeleverde feedback is voorlopig nog minimaal met het oog op waar we uiteindelijk naartoe willen. Maar met meer dan
120.000 ingediende oplossingen voor ruim 300 programmeeropdrachten hebben we ook een interessante dataset verzameld
die wacht om ontgonnen te worden.
Het doel van deze masterthesis bestaat erin oplossingen uit te denken en uit te werken voor het automatisch beoordelen
en aanleveren van feedback op ingediende programmeeroplossingen, die kwalitatief de evenknie vormt van een menselijke
beoordelaar. Alle middelen zijn toegestaan, zolang de aangebrachte oplossingen ook in de praktijk kunnen ingezet en
uitgetest worden. Want het is inderdaad ook de bedoeling om je oplossingen live of in uitgesteld relais uit te testen op de
nieuwe groep studenten die volgend academiejaar het opleidingsonderdeel programmeren zal volgen, en ze bijvoorbeeld
te vergelijken met scores die door menselijke beoordelaars werden toegekend. Het resultaat van dit pionierswerk kan een
nuttig pedagogisch instrument opleveren, dat studenten in staat stelt om oplossingen te bedenken en die stelselmatig te
verfijnen om zo de kwaliteit van hun antwoorden te verbeteren. Studenten die de huidige leeromgeving gebruiken, geven
immers nu al de grote meerwaarde aan van het werken in een leeromgeving met instant feedback en zeggen dat ze er een
stuk beter door leren. Aan jou om nog een extra dimensie aan het leren te geven.
Als vertrekbasis kan je uitgaan van bestaande systemen die in de literatuur beschreven worden, zoals bijvoorbeeld de
Code Critic methode die ontwikkeld aan de Northwestern University voor basiscurssen programmeren in Lisp, C, C++,
Scheme en Java. De laatste zit nog in een experimentele fase. Hierbij wordt uitgegaan van een databank van programmeerpatronen waarop commentaar kan geleverd worden onder de vorm van verbeterstappen of zelfs automatische
herschrijfregels. Alternatieve methodologie¨en kunnen ge¨ımplementeerd worden binnen lint-achtige toepassingen die bestaan voor een rits aan programmeertalen, waaraan bijkomende patronen en patroonherkenning kan toegevoegd worden.
Vanuit praktisch oogpunt zijn we in de eerste plaats ge¨ınteresseerd in oplossingen die onmiddellijk kunnen ingezet worden
binnen een basiscursus programmeren in Python, waarbij de PyLint module als vertrekbasis kan dienen. Idealiter werken
de aangebrachte oplossingen echter programmeertaal-onafhankelijk.
Meer info: [email protected]