=Paper=
{{Paper
|id=None
|storemode=property
|title=Automatische Bewertung von Übungsaufgaben in VIPS
|pdfUrl=https://ceur-ws.org/Vol-1067/abp2013_submission_5.pdf
|volume=Vol-1067
|dblpUrl=https://dblp.org/rec/conf/abp/GustW13
}}
==Automatische Bewertung von Übungsaufgaben in VIPS==
Automatische Bewertung von Übungsaufgaben in VIPS
Helmar Gust, Nadine Werner
IKW Universität Osnabrück, virtUOS Universität Osnabrück
helmar.gust@uos.de, nadine.werner@uos.de
Abstract Zum andern gibt es aber starke formale Restriktionen an
die eingegebenen Texte: Sie müssen als Programm-Code
Vips ist ein virtuelles Prüfungssystem und fehlerfrei kompilierbar sein und sie müssen das geforder-
dient zur Verwaltung, Durchführung und te Programm-Verhalten produzieren. Die Korrektur und
Auswertung von Online-Übungen und Bewertung von Programmieraufgaben ist normalerwei-
Online-Klausuren. Der Schwerpunkt der se erheblich aufwändiger als bei Freitextaufgaben, ins-
Vips-Entwicklung liegt auf der automatischen besondere dann, wenn sie Fehler enthalten. Eine Unter-
Auswertung von Aufgaben, um demjeni- stützung bei diesen Aufgaben ist also sehr hilfreich aber
gen, der die Aufgaben stellt und beurteilen wegen der Komplexität solcher Aufgaben auch entspre-
muss, möglichst viel Arbeit abzunehmen. chend schwierig.
Darüber hinaus ermöglicht Vips Übungen
und Klausuren für die Studierenden in einem Vips wurde entwickelt, um einfach online Übungen
Selbsttest-Modus anzubieten. Das System und Klausuren durchführen zu können und den Dozen-
bietet verschiedene Möglichkeiten zur Ent- ten bei einer Reihe organisatorischer Aufgaben zu ent-
wicklung, Pflege und Auswertung virtueller lasten. Ein Schwerpunkt der Vips-Entwicklung liegt da-
Prüfungen sowie die Verwaltung des gesamten bei auf der automatischen Auswertung von Aufgaben,
Übungsbetriebs eines Kurses. um demjenigen, der die Aufgaben stellt und beurteilen
muss, möglichst viel Arbeit abzunehmen. Darüber hin-
aus ermöglicht Vips Übungen und Klausuren für die Stu-
1 Einleitung dierenden in einem Selbsttest-Modus anzubieten. Neben
Die Korrektur und Bewertung von Übungsaufgaben im der Erstellung und Verwaltung von Übungsblättern und
Rahmen von Lehrveranstaltungen erfordert von den Do- Klausuren umfasst Vips eine Arbeitsgruppenverwaltung,
zenten einen nicht unerheblichen Aufwand an Zeit. Da- Punkte- und Notenübersichten für einzelne Teilnehmer
her haben sich in vielen Bereichen stark schematisierte und Arbeitsgruppen, sowie eine flexible Notenberech-
Aufgabentypen durchgesetzt. Typische Beispiele dafür nung. Vips stellt eine Vielzahl unterschiedlicher Aufga-
sind Multible- und Single-Choice Aufgaben sowie Zuord- bentypen zur Verfügung: Single Choice, Multiple Choice,
nungsaufgaben. Auch für solche Aufgaben ist die händi- Ja/Nein-Fragen, Zuordnungen, Lückentext, Freitext und
sche Korrektur zeitaufwändig und lästig. Allerdings lässt Programmieraufgaben (z.B. Prolog, Lisp, Haskell oder
sich die Auswertung dieser Aufgaben sehr leicht automa- Octave).
tisieren. Immer dann, wenn freie Texteingaben erwartet In diesem Papier soll der Schwerpunkt auf Program-
werden (und dies gilt bereits bei Lückentextaufgaben), mieraufgaben und deren automatischer Auswertung lie-
ist für die Beurteilung aber ein gewisses Verständnis der gen. Single Choice, Multiple Choice, Ja/Nein-Fragen,
Aufgabe notwendig, zumindest dann, wenn von der vor- Zuordnung und Lückentext-Aufgaben können einfach
gegebenen korrekten Lösung abgewichen wird. Bei wei- automatisch bewertet werden. Vips führt für diese Auf-
tem komplexer ist die Situation natürlich bei Freitext- gaben standardmäßig eine komplett automatische Be-
aufgaben. Aber auch bei diesen Aufgaben lässt sich die wertung durch. Allerdings kann das Ergebnis auch bei
Korrektur und Bewertung von automatischen Systemen diesen Aufgaben vom Dozenten nachträglich überschrie-
zumindest unterstützen. So hilft bereits das herausfiltern ben werden. Für Freitext und Programmieraufgaben
klarer Standardfälle, einen erheblichen Teil des Zeitauf- ist eine vollständig automatische Auswertung i.a. nicht
wandes einzusparen, etwa wenn auf der einen Seite Mus- möglich. Trotzdem kann eine Korrektur erheblich durch
terlösungen erkannt werden können und auf der ande- automatisierte Verfahren unterstützt werden. Vips stellt
ren Seite klare Fälle der Nichtbeantwortung herausgefil- für Programmieraufgaben eine Runtime-Umgebung mit
tert werden können. Programmieraufgaben nehmen eine einer einfachen GUI zur Verfügung. Dies ermöglicht den
Sonderstellung ein. Zum einen handelt es sich um Aufga- Kursteilnehmern die Aufgaben ohne lokale Installationen
ben, die sich weitgehend wie Freitextaufgaben verhalten. der Programmiersprachen zu lösen. Allerdings stehen in-
teraktive Debug-Möglichkeiten in einer solchen Umge- Verwaltung des gesamten Übungsbetriebs eines Kurses.
bung nicht zur Verfügung. Daher kann auf eine loka- Vips stellt Übungsblätter und Kausuren zur Verfügung.
le Installation der Programmiersprachen insbesondere Beide unterscheiden sich nicht in der Struktur der Auf-
bei komplexen Aufgaben nicht immer verzichtet werden. gaben sondern nur im Modus des Ablaufes und der Zu-
Um lokale Installationen zum Aufgabenlösen benutzen ordnung zu einzelnen Teilnehmern (bei Klausuren) bzw.
zu können, gibt es Down- und Upload-Möglichkeiten für zu Arbeitsgruppen (bei Übungsblättern). Zudem gibt es
die Aufgaben. Die Runtime-Umgebung steht auch für für Übungsblätter einen Selbsttest-Modus, bei dem dem
die Aufgabenkorrektur zur Verfügung. Zusammen mit ei- Kursteilnehmer nach dem Absenden einer Lösung sofort
nem vorgegebenen Default-Aufruf der Hauptfunktion ei- das Ergebnis der automatischen Auswertung angezeigt
nes Programms ermöglicht dies sowohl dem Kursteilneh- wird. Der Klausur-Modus erlaubt eine online Überprü-
mer als auch dem Korrekteur sich mit einem Mausklick fung der Zugriffsparameter sowie ein Überwachung des
einen ersten Überblick über die Lauffähigkeit der Lösung Arbeitsfortschritts der Teilnehmer.
zu verschaffen. Vips umfasst eine Arbeitsgruppenverwaltung, Punkte-
Zur Unterstützung dieser Programmieraufgaben gibt und Notenübersichten für einzelne Teilnehmer und Ar-
es ein eigenes Servermodul VEA (Vips Evaluation As- beitsgruppen, sowie eine flexible Notenberechnung. Ar-
sistent), das auf einem vom StudIP/Vips-System ge- beitsblätter und Klausuren können (zur Zeit) als Text-
trennten Rechner läuft. Die Kommunikation zwischen Dateien importiert und exportiert werden. Darüber hin-
StudIP/Vips und der Programmierumgebung geschieht aus gibt es eine Druckansicht.
über HTTP. Mit einem Bowser kann diese Schnittstelle Im Folgenden wird insbesondere auf Programmierauf-
auch direkt benutzt werden1 , um VEA zu testen und zu gaben und die automatische Unterstützung deren Aus-
konfigurieren. Vips entstand aus Ansätzen, die im Vor- wertung eingegangen.
feld und im Rahmen eines Projektes am Institut für Ko-
gnitionswissenschaft entwickelt wurden [1]. Vips ist ein
Plugin für Stud.IP2 und daher zur Zeit nur in Kombi-
3 Programmieraufgaben in Vips
nation mit Stud.IP verfügbar. Eine Überblick über die Vips stellt für Programmieraufgaben eine Runtime-
Architektur gibt Bild 1. Umgebung mit einer einfachen GUI zur Verfügung. Die
GUI ist über einen Reiter einer Lehrveranstaltung er-
reichbar. Sie ermöglicht für Programmieraufgaben den
Programm-Code einzugeben und zu editieren sowie die
Programme auszuführen. So können Kursteilnehmern
die Aufgaben lösen, ohne die Programmiersprachen lo-
kal auf ihrem Rechner installieren zu müssen. Aller-
dings stehen interaktive Debug-Möglichkeiten in einer
solchen Umgebung nicht zur Verfügung. Um für kom-
plexe Aufgabenstellungen auch lokale Installationen zum
Aufgabenlösen benutzen zu können, gibt es Down- und
Upload-Möglichkeiten für die Aufgaben.
Die Runtime-Umgebung steht auch für die Aufgaben-
korrektur zur Verfügung. Zusammen mit einem vorge-
gebenen Default-Aufruf der Hauptfunktion ermöglicht
dies sowohl dem Kursteilnehmer als auch dem Korrektor
sich mit einem Mausklick einen ersten überblick über die
Lauffähigkeit der Lösung zu verschaffen.
3.1 Anlegen eines Übungsblattes mit
Abbildung 1: ViPS / VEA -Architektur Programmieraufgaben
Um ein Übungsblatt mit Programmieraufgaben in Vips
anzulegen, gibt es unter dem Reiter ’Vips’ einer Lehr-
2 Das Vips Modul in StudIP veranstaltung mehrere Aktionen. Der Dozent kann ein
An der Universität Osnabrück ist das Übungs- und Prü- neues Übungsblatt anlegen, ein Übungsblatt auch aus
fungssystem Vips seit Sommersemester 2004 als modu- einer Textdatei importieren oder die Daten aus be-
lare Erweiterung der Lehr- und Lernplattform StudIP reits vorhandenen Übungsblättern importieren. Ist das
in einer ersten Version verfügbar. Es kann einer Lehr- Übungsblatt in der Oberfläche mit Titel und Beschrei-
veranstaltung als Plugin hinzugefügt werden. Das Sys- bung sowie Start und Endzeitpunkt versehen, kön-
tem bietet verschiedene Möglichkeiten zur Entwicklung, nen Übungsaufgaben neu hinzugefügt werden. Weiter-
Pflege und Auswertung virtueller Prüfungen sowie die hin hat der Dozent die Möglichkeit, Aufgaben aus be-
reits im StudIP vorhandenen Übungsblättern dieses
1
https://mvc.ikw.uni-osnabrueck.de/vips/vips.php oder anderer Kurse zu übernehmen. Vips stellt für ei-
2
www.studip.de ne Programmier-Übungsaufgabe, die einem Übungsblatt
hinzugefügt wird, neben der Aufgabenstellung eine Rei- • Im Programm-Code kann korrigiert und kommen-
he von Informations-Feldern bereit: tiert werden.
• Ein Lösungesfeld in das der Bearbeiter den zu ent- • In einem Textfeld können generelle Kommentare
wickelnden Code eingeben kann. Dieses Felder kann hinzugefügt werden.
vorbelegt werden, so dass dem Kursteilnehmer be- • Punkte können für die Lösung vergeben werden.
reits ein Lösungsgerüst präsentiert werden kann, das Dabei werden zunächst die automatisch vergebenen
z.B. vom Bearbeiter ergänzt bzw. geändert werden Punkte angezeigt.
muss.
• Der query-Knopf kompiliert den Lösungsfeld-Inhalt
• Ein Feld für Musterlösungen. Dieses Feld kann meh- und ruft die Hauptfunktion auf. Die Ergebnistex-
rere Musterlösungen enthalten. zudem enthält diese te der Kompilation und der Programmausführung
Feld noch den Evaluations-Code. Dieser wird in Zu- werden ausgegeben. Für nichtdeterministische Spra-
kunft in einem eigenen Textfeld verwaltet. chen wie Prolog gibt es den Knopf ’query next’, der
• Ein Feld mit Aufruf der Hauptfunktion. In Prolog bei jeder Betätigung eine weitere Lösung ausgibt.
ist dies eine Folge von Subgoals durch Kommas ge- • Der eval-Knopf stößt die automatisceh Bewertung
trennt. In anderen Programmiersprachen kann dies an (siehe Abbildung 2). Der Bewertungprozess kann
ein Funktionsaufruf oder ein arithmetischer Aus- über Tags in der Musterkösung gesteuert werden.
druck sein. Als Ergebnis werden u.a. zwei Zahlen zwischen 0
Da das Erscheinungsbild einer Aufgabenspezifikation für und 1 angezeigt: Ein Score, der die Güte der Lö-
die Kursteilnehmer nicht immer einfach vorhergesehen sung repräsentiert und ein Validitätswert, der die
werden kann, gibt es eine einfache Möglichkeit zwischen Verlässlichkeit der Bewertung signalisiert. Bei einem
der Darstellung für die Aufgabenentwicklung und der Validitätswert von 1 kann die Bewertung als sicher
Darstellung für den Kursteilnehmer umzuschalten. angesehen werden. Als Bewertungkriterien können
die IO-Relation (also das Verhalten) des Programms
3.2 Bearbeiten eines Übungsblattes mit sowie textuelle Vergleiche des Lösungscodes mit den
Programmieraufgaben Musterlösungen auf verschiedenen Normalisierungs-
ebenen herangezogen werden.
Aus Kursteinehmer-Sicht bietet die GUI folgende Mög-
lichkeiten: Die abgegebenen Übungsblätter werden dem Dozenten
in einer Übersicht präsentiert. Von hier aus gelangt er
• Der Kursteilnehmer kann seine Lösung in ein Text- zu den einzelnen Übungsaufgaben.
feld eintragen. Dieser Bereich ist eventuell bereits
mit einem Lösungsgerüst vorbelegt. 4 Der Vips Evaluation Assistent VEA
• Basierend auf der aktuellen Lösung kann eine Tes- Zur Unterstützung der Auswertung von Programmier-
tanfrage gestellt werden. Das Ergebnis des Pro- aufgaben gibt es ein eigenes Server-Modul VEA (Vips
grammlaufs wird angezeigt. Evaluation Assistent), das auf einem vom StudIP-
• Der Inhalt des Lösungsbereichs kann in eine loka- System getrennten Rechner läuft. Sinnvoll ist hier eine
le Datei heruntergeladen werden, so dass eine lo- dedizierter Rechner, der nur für diese Aufgabe zur Verfü-
kale Installation der Programmiersprache zur Pro- gung steht, da die Ausführung von fremden Programm-
grammentwicklung benutzt werden kann. code immer auch mit Sicherheitsrisiken verbunden ist.
VEA stellt Runtime-Umgebungen für Programmierauf-
• Anschießend kann die fertige Lösung wieder in das gaben in ausgewählten Programmiersprachen zur Verfü-
Bearbeitungsfeld hochgeladen werden. gung. Diese Umgebungen können zur Entwicklung der
• Über den Button ’abschicken’, wird die Übungsauf- Lösungen und zur Bewertung dieser Lösungen benutzt
gabe abgegeben. Übungsaufgaben können im Rah- werden. Die Kommunikation zwischen StudIP/Vips und
men der Bearbeitungszeit mehrfach abgegeben wer- der Programmierumgebung geschieht über HTTP, so
den. Die als letztes abgegeben Lösung zählt. dass diese Schnittstelle mit einem Bowser auch direkt be-
Kursteilnehmer können in Arbeitsgruppen organisiert nutzt kann. Dieses Interface gestattet neben der Konfigu-
sein. Dann gilt bei einem Aufgabenblatt eine abgege- ration auch den Test aller Funktionen, sowie die Erwei-
bene Lösung für die gesamte Arbeitsgruppe. Bei einer terung des Systems um weitere Programmiersprachen.
Klausur gilt sie immer nur für einzelnen Teilnehmer. Im 4.1 Kommunikation mit Vips
Selbsttestmodus wird nach der Abgabe die Auswertung
und die (erste) Musterlösung angezeigt. Zur Zeit gibt es zwei Modi für die Kommunikation zwi-
schen Vips und VEA:
3.3 Auswertung eines Übungsblattes mit 1. Alle Datenfelder werden als eigene Post-Felder über-
Programmieraufgabe tragen (wird zur Zeit von Vips benutzt).
Im Korrektur- und Bewertungsmodes von Vips stellt die 2. Die Aufgabenspezifikation wird als XML-Strutur
Oberfläche folgende Funktionen zur Verfügung übertragen und nur die abgegebene Lösung wird
Abbildung 2: Auswertungsmodi einer Programmier-Übungsaufgabe
als eigenes Feld übertragen. Die XML-Struktur list Es wir eine Liste der verfügbaren Services zurück-
entspricht dem Aufgaben-Austauschformat, das im gegeben. Zur Zeit ist nur der Service Prolog und Lisp
Rahmen von eCULT3 entwickelt wird. komplett realisiert. Haskel, Oktave und R sind nur rudi-
mentär vorhanden.
Die wichtigsten Felder, die VEA erwartet, sind in Tabel-
le 1 aufgeführt: Im Fall, dass eine XML-Struktur über- query Der Auswertungsmodus query kompiliert den
Lösungsfeld-Inhalt und ruft die Hauptfunktion auf. Der
Ergebnistext (Compiler-Protokoll und das Ergebnis der
Tabelle 1: Liste der wichtigsten Felder Ausführung, falls das Programm fehlerfrei kompiliert
Feldname Beschreibung Werte werden konnte) wird an Vips übertragen und ausgege-
adm Administrationsebenen 0|1|2|3|4|5|6 ben. Im Falle einer Fehlermeldung oder einer Warnung
typ Auswertungsmodus query | eval wird zusätzlich der mit Zeilennummern versehene Code
mgc Password ausgegeben, um die Fehlersuche zu erleichtern. Damit
srv Service Prolog | Lisp .... wird eine rudimentäre Entwicklungsumgebung realisiert,
qry Query / Call in der Programmentwürfe und Lösungsansätze getestet
exp Musterlösungen werden können.
ini Vorbelegung des Lö-
sungsfeldes eval Der Auswertungsmodus eval testet die abgegebe-
exc ausführbare Lösung ne Lösung und versucht, eine automatische Bewertung
xml XML-Spezifikation durchzuführen. In diesem Modus liefert VEA im Wesent-
einer Aufgabe lichen zwei Zahlen s (score) und v (validity) zwischen 0
und 1 zurück. v = 1 bedeutet, dass eine valide Bewer-
tung vorgenommen werden konnte. s = 0 bedeutet in
trage wird, werden diese Felder teilweise aus der XML- diesem Fall, dass die Lösung vollkommen falsch ist und
Struktur gefüllt. s = 1 entsprechend, dass sie vollkommen richtig ist (z.B.
wenn sie mit einer Musterlösung übereinstimmt). Eine
4.2 Implementierte Funktionen Überprüfung durch einen Korrekteur sollte in diesem Fall
Die Schnittstelle erlaubt neben der Konfiguration die nicht notwendig sein. Werte von v kleiner 1 deuten dar-
Ausführung eine Reihe von Funktionen: list, hash, query auf hin, dass keine sichere Bewertung vorgenommen wer-
und eval. den konnte, der Score s also nur ein Anhaltspunkt für
den Korrekteur sein sollte. Es stehen mehrere Testver-
3
http://www.ecult-niedersachsen.de/ fahren zur Verfügung. VEA iteriert die beiden folgenden
Verfahren jeweils über alle Musterlösungen m. die einzelnen Programmiersprachen, die die syntak-
• Vergleich der Ergebnisse der Lösung und der tische Struktur berücksichtigen können bis zu robus-
Musterlösung bei verschiedenen Eingaben. Der ten Textvergleichen unabhängig von der konkreten
Auswertungs-Modus ’eval’ kompiliert sowohl den Programmiersprache. In der gegenwärtigen VEA-
Lösungsfeld-Inhalt als auch die Musterlösung so- Version wird die zweite Möglichkeit benutzt:
wie ein Stückchen Test-Code, dass die Ergebnisse 2 ∗ similar_text(t1 , t2 )
des Lösungsvorschlags und den Musterlösungen ver- sim(t1 , t2 ) = (7)
|t1 | + |t2 |
gleicht. Die Werte für s und v für diesen Testteil
werden folgendermaßen berechnet: Dabei ist similar_text eine PHP-Funktion, die die
die übereinstimmenden Zeichen zählt.
1
sm
comp = (1) • Textueller Vergleich des Lösungsvorschlags und der
1 + #compiler_f ehler Musterlösungen auf der Basis verschieden starker
0.5 ∗ #pos Normalisierungsstufen. Die wesentlichen Stufen sind
sm
eval = + 0.5 ∗ scomp (2)
#pos + #neg) folgende:
m
veval = sm
eval (3) – In der Standard-Stufe (wird grundsätzlich an-
gewendet) werden nur Kommentare am Anfang
#pos ist dabei die Anzahl der Testfälle, für die und Ende der Lösung sowie doppelte Zeilenum-
korrekte Ergebnisse geliefert wurden, und #neg brüche und Blanks am Zeilenende entfernt.
entsprechend die Fälle, für die falsche Ergebnisse – In der schwachen Stufe werden zusätzlich
geliefert wurden. Die letzte Gleichung ist in so- Blanks vor und nach Operatoren und Trennzei-
fern plausibel, als dass ein niedriger Score-Wert chen sowie mehrfache Blanks und Kommentare
nicht bedeuten muss, dass das Programm komplett entfernt.
falsch ist: Ein kleiner Fehler kann etwa eine Reihe
– In der mittleren Stufe werden zusätzlich alle
von Compiler-Fehlermeldungen evozierten. In die-
Blanks und Zeilenümbrüche entfernt.
sem Fall sollte also auch ein entsprechend niedriger
Validitätswert angesetzt werden. Auf der anderen – In der starken Stufe werden zusätzlich alle
Seite bedeutet eine hoher Score-Wert, dass das Pro- kleingeschriebenen Symbole auf ’a’ und alle
grammverhalten korrekt ist, was ein relativ sicherer großgeschriebenen Symbole auf ’V’ reduziert,
Hinweis darauf sein sollte, dass auch das Programm so dass nur die Programmstruktur selbst erhal-
korrekt ist. ten bleibt. 6
• Textueller Vergleich des Lösungsvorschlags mit der Für die ersten drei Stufen wird auf Identität der
Musterlösung und der Vorbelegung des Lösungsfel- normalisierten Texte getestet. Für die stärkste Stu-
des. Auf der Basis eines Ähnlichkeitsmaßes4 sim fe wird ein toleranter Textmatch, der maximale
werden ein Score ssim und ein Validitätswert vsim gemeinsame Teilstrings berücksichtigt, verwendet.
nach folgender Formel berechnet Diese Vergleiche werden u.a. dazu benutzt, um ein
textuelles Ergebnis ausgeben zu können: ’literally
1 − sim(IN I, EXC) same’, ’same with similar layout’, ’same up to lay-
s0 = sim(EXC, EXP ) ∗ out’ und ’stucturally similar’, je nachdem, auf wel-
1 − sim(IN I, EXPm )
(4) cher Stufe die Gleichheit erkannt wurde. Für diese
Fälle können auch feste vorgegebene Werte für den
sm
sim = s02 ∗ sm
max (5) Score s und den Validitätswert v vergeben werden.
m
vsim = max(1 − s0 , sm 2 In diesem Fall überschreiben diese die Werte aus
sim ) (6)
dem vorigen Verfahren.
EXC und IN I referieren auf die entsprechenden Hieraus berechnen sich die Werte (vsim , ssim )
Feldinhalte (Lösungsvorschlag und Vorbelegung) m
maxm ((vsim , sm
als sim )) und (veval , seval ) als
und EXPm auf die m-te Musterlösung. s0 liefert also m m
maxm ((veval , seval )) bezüglich der lexikalischen Ord-
0, falls die Vorbelegung nicht geändert wurde, und nung. Für jede Aufgabe kann festgelegt werden, ob nur
1, falls eine der Musterlösungen eingegeben wurde. der Lösungsmengenvergleich, nur der Textvergleich oder
Formel (5) realisiert eine pessimistische Sichtweise eine Kombination von beiden (default) in die endgülti-
für den Score-Wert und Formel (6) entsprechend für gen Werte von s und v eingehen, die zur Berechnung
den Validitätswert. smmax ist der vorgegebene maxi- eines Bewertungsvorschlages benutzt werden. Diese
mal Score für die m-te Musterlösung5 . Kritisch ist relativ groben heuristischen Verfahren zur Berechnung
natürlich die Wahl der Funktion sim. Das Mögli- der Werte s und v haben sich insbesondere für Prolog
che Spektrum reicht von spezifischen Funktionen für als durchaus brauchbar erwiesen.
4 6
Für ein Ähnlichkeitsmaß sim muss gelten 0 ≤ Insbesondere die stärkste Normalisierungsstufe sollte ab-
sim(x, y) ≤ sim(x, x) = 1 hängig von der Programmiersprache sein. Es ist daran ge-
5
Musterlösungen können unterschiedliche Güte haben. dacht, für alle Stufen in der Konfiguration parametrisierbare
Für die erste Musterlösung gilt immer sm
max = 1 Pattern zu erlauben.
hash Es werden vier MD5-Hash-Werte zurückgegeben,
die den vier Code-Normalisierungen entsprechen. Diese
Werte können in Vips benutzt werden, um Ähnlichkeiten
zwischen den Lösungen unterschiedlicher Teilnehmer zu
erkennen. So kann z.B. festgestellt werden, ob eine Lö-
sung schon als Lösung eines anderen Teilnehmers korri-
giert wurde.
4.3 Konfiguration
Zur Konfiguration eines Services sind zwei Dateien not-
wendig:
config enthält eine Reihe von Attribut-Wert-Paare zur
Konfiguration des Systems. Hier werden u.a. die Auswer-
tungsparameter eingestellt, die Kommentarspezifikation
der Programmiersprache festgelegt sowie die erlaubten
Funktionen und Symbole aufgelistet.
exec ist ein Shell-Script und Implementiert für die Funk-
tionen query und eval den Compiler-Aufruf. Hier ist dar-
auf zu achten, dass der Resourcen-Verbrauch des Pro-
zesses limitiert und die Priorität niedrig eingestellt wird,
damit der Prozess die Machine nicht blockiert. Zudem
sind Sicherheitsmaßnahmen gegen den Missbrauch die-
ser Schnittstelle zu bedenken.
Darüber hinaus muss für die Funktion eval ein Pro-
gramm zur Verfügung gestellt werden, dass die IO-
Relation des Lösungsvorschlag überprüft. In den imple-
mentierten Services wird dazu die erste Musterlösung
benutzt und für eine Reihe von Testfällen die Ergebnisse
beider Programme verglichen.
5 Zusammenfassung und Ausblick
Das Modul Vips (Virtuelles PrüfungsSystem) über-
nimmt in StudIP die komplette Verwaltung des Übungs-
betriebs einer Veranstaltung. Vips wurde um eine Kom-
ponente VEA (Vips Evaluation Assistent) zur automa-
tischen Bewertung von Programmieraufgaben erweitert.
VEA stellt sowohl semantische (Programmverhalten) als
auch syntaktische (Beurteilung des Programm-Codes)
Verfahren zur Bewertung von Programmieraufgaben zur
Verfügung. VEA ist immer noch in einem experimen-
tellen Stadium. Sowohl die Funktionalität, als auch die
Kommunikation zwischen Vips und VEA sollen weiter-
entwickelt werden.
Literatur
[1] Peylo, C.; Gust, H.; Rollinger, C.; Thelen, T. (2000):
A web-based intelligent educational system for PRO-
LOG. In: C. Peylo (Ed.), Proceedings of the Interna-
tional Workshop on Adaptive and Intelligent Web-
Based Education Systems held in conjunction with
ITS 2000 Montreal, Canada. Technical Report of
the Institute for Semantic Information Processing,
Osnabrück 2000.