AutoFeedback

Automatisches Feedback zu Programmierlösungen in Java

Finanzielle Unterstützung durch Lehrfonds der FHNW (2019-2020)

Master Projekt (2020-2022)

Ausgangslage

Im Einführungsunterricht zum Programmieren ist es wichtig, dass die Studierenden selbständig Programmieraufgaben lösen und dass sie zu ihren Lösungen ein sinnvolles und individuelles Feedback erhalten. Mit wachsenden Studierendenzahlen ist ein individuelles Feedback jedoch nicht mehr zeitnah möglich.

Dieses Problem kennen auch die Anbieter von weltweit offenen Online-Lehrangeboten, die in ihren Modulen Unmengen von Computerprogramen begutachten, kommentieren und allenfalls bewerten müssen. Diese Plattformen bieten daher Infrastrukturen an, mit denen ein Feedback automatisch generiert werden kann. Lösungen, die von deren Feedbackgeneratoren nicht beurteilt werden können, werden weiterhin von einem menschlichen Tutor beurteilt, d.h. die limitierten Personalressourcen werden so auf die Spezialfälle beschränkt, die nicht automatisch behandelt werden können.

Die automatischen Feedbackgeneratoren beschränken sich jedoch häufig darauf, die syntaktische Korrektheit von Programmen zu prüfen sowie die Funktionalität mit Hilfe von Blackbox-Tests zu validieren. Die Komplexität des Programms kann allenfalls mit speziellen Software-Metriken (z.B. der zyklomatischen Komplexität) beurteilt werden, und oft werden auch Plagiatsprüfer eingesetzt.

Neben den herkömmlichen Ansätzen möchten wir jedoch auch ein detailliertes Feedback zum Programmierstil der Lösung generieren, was bei einfachen Aufgaben, wie sie im Einführungsunterricht zum Programmieren vorkommen, machbar sein sollte. Unser Feedbacksystem soll also mehr leisten, als nur die Korrektheit bzw. Fehler bei verschiedenen Testbeispielen zurückzumelden:

  • Korrektheit: neben Unit-Tests können auch Verifikationsmethoden basierend auf der Java Modelling Language (JML) zum Einsatz kommen
  • Performance: neben einer Zeitmessung wird auch eine Abschätzung der asymptotischen Zeitkomplexität durchgeführt
  • Struktur und Programmierstil: strukturelle Ähnlichkeiten zwischen zwei Lösungen zur gleichen Aufgabe werden mit geeigneten Metriken gemessen

Lösungsansatz

AutoFeedback ist eine Web-Applikation, über welche die Lösungen von Studierenden analysiert und getestet und ein Feedback generiert werden kann. Dozierende können auf dieser Plattform neue Aufgaben („Tasks“) erstellen. Dazu definiert ein Dozent die Programmierschnittstellen, welche die Studierenden implementieren müssen, sowie entsprechende Testklassen. Wenn ein Student seine Lösung zu einer Aufgabe testen möchte, wählt er den dazugehörigen Task aus und lädt seine Java-Klassen hoch. Anschliessend wird der Code in einem Docker-Container kompiliert und evaluiert. Nach der Evaluation werden die Resultate den Studierenden mit einem Feedback im Task auf der Webseite angezeigt.

Dokumente

Kontaktperson

Prof. Dr. Christoph Stamm

Dozent für Informatik

Telefon: +41 56 202 78 32(Direkt)
×