<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Automatische Bewertung von Datenbankaufgaben unter Verwendung von LON- CAPA und Praktomat</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marcel Kruse</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>m.kruse</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>n.jensen}@ostfalia.de</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>In dieser Ausarbeitung wird eine, im Rahmen des eCult-Projektes erarbeitete, Lösung zur automatischen Bewertung von Datenbankaufgaben mittels des LCMS LONCAPA sowie des externen Bewertungstools Praktomat vorgestellt. Hierbei soll zum Einem auf die Verbindung des LCMS mit externen Bewertungstools, wie dem Praktomat, sowie auf die Funktionsweise und das Verfahren der automatischen Bewertung von SQL-Aufgaben näher eingegangen werden.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Einleitung</title>
      <p>nur unsere Lösung den weltweiten elektronischen Austausch der SQL-Aufgaben in dem
Peer-to-Peer-Netzwerk loncapa.org.</p>
      <p>Kapitel 2 spezifiziert die verwendeten Systeme. Kapitel 3 beschreibt den technischen
Ablauf. Kapitel 4 gibt den Ausblick.
2</p>
    </sec>
    <sec id="sec-2">
      <title>LON-CAPA und Praktomat</title>
      <p>In den folgenden beiden Kapiteln soll die Möglichkeit der eingangs erwähnten
automatischen Bewertung von Datenbankaufgaben unter Verwendung des Learning Content
Management Systems (LCMS) LON-CAPA und des Bewertungstools Praktomat diskutiert
und erläutert werden.</p>
      <p>Mit dem LCMS LON-CAPA existiert bereits ein System zur automatischen Bewertung
von, unter anderem, mathematischen Aufgaben unterschiedlichster Ausprägung. Aufgrund
des Open-Source Charakters von LON-CAPA werden darüber hinaus ständig
Weiterentwicklungen erarbeitet, um das Spektrum der automatisch bewertbaren Aufgaben stetig zu
erweitern. Hierbei werden unter anderem externe Grading-Tools angebunden, die solche
Bewertungen, beispielsweise, auch für von LON-CAPA nicht nativ unterstützte Aufgaben
zu Programmiersprachen ermöglichen sollen. Exemplarisch lassen sich hierfür Aufgaben
in den Programmiersprachen Java und Python nennen. Ein Tool, was die Bewertung
derartiger Aufgaben ermöglicht, stellt beispielsweise das System Praktomat dar, das mittels
einer REST-Schnittstelle mit LON-CAPA verbunden ist. Hierbei werden die studentischen
Einreichungen zur Lösung einer etwaigen Aufgabe, mittels eines Post-Requests an den
Praktomat gesendet. Die Antwort des externen Graders erwartet LON-CAPA in
XMLFormat. Das Sequenzdiagramm in Abbildung 1 veranschaulicht diesen Austausch
zwischen LON-CAPA und Praktomat nochmals etwas genauer.</p>
      <p>Abbildung 1: Sequenzdiagramm der externen Bewertung</p>
      <p>Der Praktomat nimmt eine automatische Bewertung von studentischen Lösungen
für Programmieraufgaben aus einem LON-CAPA-Kurs vor, in dem die Studierenden
eingeschrieben sind. Durch Hochladen und Einreichen ihrer Lösung in LON-CAPA stoßen
die Studierenden den Prozess auf Seiten des Praktomat an, der die Bewertung der
eingereichten Lösung veranlasst. Das Ergebnis dieser Bewertung wird anschließend an
LONCAPA zurück gegeben. All diese Prozesse laufen vollständig im Hintergrund ab, so dass
die Studierenden nichts davon erfahren. Aus Benutzersicht ist diese Bewertung somit
identisch mit der Bewertung einer solchen Aufgabe, die vollständig auf Seite von LON-CAPA
vorgenommen wird. Die vom Praktomat zurückgelieferte Auswertung stellt hierbei eine
vorläufige Bewertung dar. Die endgültige Bewertung kann von Lehrenden im Kurs noch
nachträglich angepasst und verändert werden, um etwaige Szenarien, die eine abweichende
Bewertung nötig machen, abdecken zu können.</p>
      <p>Die Struktur und das Verhältnis von LON-CAPA und dem Praktomat zueinander
werden in Abbildung 2 genauer dargestellt.</p>
      <p>Abbildung 2: Schema der Praktomat-Anbindung
3</p>
    </sec>
    <sec id="sec-3">
      <title>Bewertungsverfahren für SQL-Aufgaben</title>
      <p>Über die Bewertung von Java-Aufgaben hinausgehend ist es, mit Hilfe des Praktomat,
nun auch möglich, SQL-Aufgaben automatisch bewerten zu lassen. Um dies zu erreichen,
wurde für die Verwendung auf dem Praktomat, in der Skriptsprache Python ein
ScriptChecker entwickelt, dessen Funktionsweise im Folgenden näher erläutert wird. Hierbei
soll zum Einen die Struktur des zugrunde liegenden SQL-Interpreters erklärt werden.
Darüber hinaus soll zum Anderen auf den Ablauf und das Verfahren der Auswertung an
sich eingegangen werden. Zur besseren Illustration erfolgt dies auf Grundlage des
Flussdiagramms in Abbildung 3, welches einen Überblick über das Verfahren der eigentlichen
Bewertung der studentischen Lösung gibt.</p>
      <p>Der Checker für die Bewertung der SQL-Aufgaben nimmt zunächst eine, auf dem
Praktomat zur Verfügung stehende, Musterlösung einer, in LON-CAPA existierenden,
SQLAufgabe entgegen.</p>
      <p>
        (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ) Diese wird dahingehend verarbeitet, dass sie zunächst in einzelne SQL-Befehle
zerlegt wird.
      </p>
      <p>
        (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) Die von den Studierenden über LON-CAPA eingereichte Lösung der Aufgabe wird
anschließend auf identische Weise zerlegt.
      </p>
      <p>(3) Daraufhin wird jeder der SQL-Befehle aus der Musterlösung separat an einen
SQLInterpreter weitergeleitet, der die Einreichung auf Syntax-Fehler untersucht. Das Ergebnis
dieser Prüfung wird mittels des Skript-Checkers verwaltet.</p>
      <p>(4) Gleiches geschieht analog für jeden einzelnen Befehl der studentischen
Einreichung.</p>
      <p>Der in diesem Zusammenhang verwendete Interpreter, ist ein Oracle DBMS mit einem
von Prof. Dr. J. S. Lie et al entwickelten Web-Interface. Er erhält die zu bewertenden
Befehle mittels eines get-Requests über das Web-Interface und generiert, nach Ausführung
des betreffenden Befehls auf einer im Hintergrund laufenden Datenbank, eine
AntwortSeite, die das Ergebnis der Ausführung des Befehls enthält.</p>
      <p>Da alle Datenbank-Transaktionen des Web-Interpreters mit derselben Datenbank
ablaufen, muss vom Script sichergestellt werden, dass nach der Bewertung der
Musterlösungen sämtliche erzeugten Tabellen wieder gelöscht werden. Dies hat den Hintergrund,
Musterlösung</p>
      <p>einlesen
2
Musterlösung/
in/SQLCBefehle/</p>
      <p>splitten
Studentische/</p>
      <p>Lösung/
einlesen
3
Einreichung
in/SQLCBefehle
splitten</p>
      <p>Alle
Befehle/der
Musterlösung/
ausgeC
wertet?</p>
      <sec id="sec-3-1">
        <title>NEIN</title>
        <p>JA
4
C/SQLCBefehl/an/Interpreter/senden
C/Antwort/parsen
C/Auswertung/speichern</p>
        <p>Alle
Befehle/der
studP/Lösung/
ausgeC
wertet?</p>
      </sec>
      <sec id="sec-3-2">
        <title>NEIN</title>
        <p>JA
5
C/SQLCBefehl/an/Interpreter/senden
C/Antwort/parsen
C/Auswertung/speichern</p>
        <p>Anzahl/</p>
        <p>Befehle
/studP/J/MusterC
lösung/
gleich?</p>
      </sec>
      <sec id="sec-3-3">
        <title>NEIN</title>
        <p>6
Fehlerausgabe
bezüglich/
Befehlsanzahl
JA</p>
        <p>Alle
Auswertungen
befehlsweise/
verglichen?</p>
      </sec>
      <sec id="sec-3-4">
        <title>NEIN</title>
        <p>7
C/Befehlstyp/ermitteln
C/Vergleich/Auswertung/
//studentische/Lösung/J/
//Musterlösung/
JA
8
VergleichsC
ergebnis
speichern
JA</p>
        <p>VergleichsC
/ergebnis
korrekt?</p>
        <p>Fehler/in
VergleichsC
ergebnissen?</p>
        <p>JA
Meldung/
binkorrektb/
an/LONCCAPA</p>
      </sec>
      <sec id="sec-3-5">
        <title>NEIN</title>
      </sec>
      <sec id="sec-3-6">
        <title>NEIN</title>
        <p>Meldung/
bkorrektb/
an/LONCCAPA</p>
      </sec>
      <sec id="sec-3-7">
        <title>NEIN</title>
        <p>erster/Fehler?</p>
        <p>JA
8</p>
        <p>Hint/erzeugen</p>
        <p>Abbildung 3: Bewertungsverfahren
falsch negative Ergebnisse, wie fehlgeschlagene "CREATE"-Anweisungen aufgrund
bereits existierender Tabellen, zu verhindern. Analog dazu wird darüber hinaus, vor dem
Beginn der automatischen Bewertung, geprüft, ob eine so genannte "Lock-Table" in der
Datenbank vorhanden ist, um zu verhindern, dass mehrere Bewertungvorgänge gleichzeitig
auf das Web-Interface zugreifen. Existiert die Tabelle bereits in der Datenbank, versucht
das Skript mehrfach diese "Lock-Table" anzulegen, und die Kommunikation mit dem
Interface für den aktuellen Bewertungsvorgang zu reservieren. Nach einer festgelegten
Anzahl von fehlgeschlagenen Versuchen erfolgt ein Time-Out mit der Rückmeldung an
LONCAPA, dass die Einreichung zu einem späteren Zeitpunkt wiederholt werden soll. Nach
Abschluss der automatischen Bewertung, wenn alle Befehle der studentischen Einreichung
und der Musterlösung an das Interface gesendet und ihre Auswertung gespeichert wurden,
wird auch die "Lock-Table" gelöscht, um das Interface für den nächsten
Bewertungsvorgang frei zu geben.</p>
        <p>In einem nächsten Schritt wird überprüft, ob die Anzahl der eingereichten Befehle aus
Musterlösung und studentischer Einreichung an den Interpreter übereinstimmt.
(5) Ist dies nicht der Fall, erfolgt eine Fehlerausgabe mit einem Hinweis auf die
Differenz der Befehlsanzahl.</p>
        <p>(6) Im Anschluss geschieht, skriptseitig, ein befehlsweiser Vergleich der Feedbacks
des Interpreters. Hierbei wird eine Unterscheidung zwischen Feedbacks zu
verschiedenen Typen der jeweiligen SQL-Statements, sowie eine diesem entsprechende Auswertung
vorgenommen. Dies stellt dahingehend eine Überprüfung der studentischen Einreichung
dar, dass sichergestellt wird, ob diese nicht nur syntaktisch korrekt ist, sondern
gleichsam auch inhaltlich eine valide Lösung der Aufgabenstellung widerspiegelt. Für den Fall,
dass bereits der SQL-Interpreter einen Syntax-Fehler für den aktuell untersuchten Befehl
zurückgeliefert hat, wird der betreffende Befehl der studentischen Lösung im
Gesamtergebnis unmittelbar als "inkorrekt" bewertet. Liegt für das zu untersuchende SQL-Statement
keine Fehlermeldung des Interpreters vor, wird dieser Teil der Einreichung mit dem
korrespondierenden Befehl der Musterlösung inhaltlich verglichen und darauf überprüft, ob zum
Beispiel die Ergebnis-Tabellen einer "SELECT"-Anweisung die gleichen Zeilen besitzen
oder ob die Datensätze aus den "INSERT"-Anweisungen inhaltlich den Anforderungen
der Aufgabenstellung genügen. Hierfür ist jedoch, für ein positives Ergebnis, von Nöten,
dass die Studierenden sich hinsichtlich der Anordnung von Attributen und Reihenfolge von
"INSERT"-Statements exakt an die Spezifikationen der Aufgabenstellung halten.</p>
        <p>(7) Wurde ein Fehler ermittelt, erzeugt das Skript eine Fehlermeldung, die einen
Hinweis darauf enthält, in welchem SQL-Statement ein Syntaxfehler bzw. ein Fehler
inhaltlicher Natur aufgetreten ist. Um Ketten von Fehlermeldungen zu vermeiden, deren
Ursprung in einem Fehler zu Beginn der SQL-Statements liegt, wird momentan überprüft
ob der aktuell gefundene Fehler der erste Fehler in der Einreichung ist. Nur für diesen Fall
wird die entsprechende Meldung erzeugt. Der erzeugte Hinweis beinhaltet Anmerkungen
zu häufig gemachten Fehlern in dem betreffenden Statement bzw. dem betroffenen
Befehlstyp. Entspricht ein Befehl auch inhaltlich dem betreffenden Befehl der Musterlösung,
so wird dieser als "korrekt" bewertet.</p>
        <p>(8) Das Ergebnis des Befehlsvergleichs wird zunächst skriptseitig zur späteren
Rückmeldung an LON-CAPA verwaltet.</p>
        <p>Wurden alle Befehle aus Musterlösung und studentischer Einreichung verglichen, wird
vom Skript ein Feedback mit den Bewertungen der einzelnen Befehle erzeugt, die vom
Praktomat an LON-CAPA zurückgegeben werden, so dass sie dort dem Studenten zur
Verfügung gestellt werden können. Das Feedback sorgt genau dann für eine positive
Bewertung der Aufgabe in LON-CAPA, wenn für keinen Befehl ein Fehler ermittelt wurde.
Wie bei allen Aufgaben in LON-CAPA wird das Ergebnis, das durch diese Rückmeldung
erzeugt wird ebenso in die Aufgabenstatistik des Kurses bzw. der spezifischen Aufgabe
übernommen und eingepflegt, um auch dem Lehrenden die Möglichkeit des Einblicks zu
geben.</p>
        <p>Aufgrund der Tatsache, dass die Funktionsweise des hier vorgestellten Skript-Checkers
unabhängig von der Konkretisierung der gestellten Datenbankaufgaben ist, lässt sich
hierdurch somit eine automatische Bewertung beliebiger SQL-Aufgaben erreichen.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Ausblick</title>
      <p>Das System ist seit zwei Semestern erfolgreich im Kurs Datenbanken im Einsatz
gewesen und wurde frequentiert von den Studierenden eingesetzt. Als Herausforderung kann
die sorgsame Spezifikation von Online-Aufgaben genannt werden um Mehrdeutigkeiten
bei der Interpretation der Aufgabenstellung auszuschließen oder diese zumindest in der
Musterlösung zu berücksichtigen. Durch die verbesserte Wiederverwendung wird sich der
dadurch erhöhte Aufwand langfristig auszahlen.</p>
      <p>Die Autoren danken dem Zentrum für erfolgreiches Lehren und Lernen
www.ostfalia.de/zell. Dieses Vorhaben wird aus Mitteln des Bundesministeriums für
Bildung und Forschung unter dem Förderkennzeichen 01PL11066H gefördert. Die
Verantwortung für den Inhalt dieser Veröffentlichung liegt beim Autor.</p>
    </sec>
    <sec id="sec-5">
      <title>Literatur</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Krinke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Störzer</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Zeller: Web-basierte Programmierpraktika mit Praktomat</article-title>
          .
          <source>In: Softwaretechnik-Trends</source>
          <volume>22</volume>
          ,
          <fpage>3</fpage>
          <lpage>10</lpage>
          /
          <year>2002</year>
          . http://www.st.cs.unisb.de/publications/details/krinke-gitrends-2002/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Stöcker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Chukhlova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tjettmers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Bott</surname>
          </string-name>
          :
          <article-title>E-Prüfungen mit dem LMS Moodle: Ergebnisse einer Pilotstudie</article-title>
          . In: Goltz et al,
          <year>Informatik 2012</year>
          ,
          <volume>42</volume>
          . Jahrestagung der Gesellschaft für Informatik,
          <source>GI-Edition</source>
          , Lecture Notes in Informatics, P-
          <volume>208</volume>
          ,
          <year>2012</year>
          ,
          <fpage>1808</fpage>
          -
          <lpage>1821</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>