=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== https://ceur-ws.org/Vol-1067/abp2013_submission_5.pdf
              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.