Anleitung

Erstellen einer Aufgabe mit ViPLab

ViPLab ist ein Pugin des ILIAS eLearning-Systems. Um eine Aufgabe erstellen zu können, loggen Sie sich bitte zunächst beim ILIAS-System ein.

Erstellen eines neuen Tests

ViPLab ist Teil des ILIAS Test&Assessment-Systems. Navigieren Sie zunächst auf einen Bereich innerhalb von ILIAS, den Sie als Dozent verwalten und in dem Sie Objekte erstellen können. Klicken Sie danach auf den Kopf "Neues Objekt hinzufügen" und wählen Sie im Menü den Punkt "Test" aus:

Test erstellen

 Vergeben Sie in der Eingabemaske für den Test einen Namen und eine Beschreibung, und klicken Sie auf "Test anlegen":

Test anlegen2

 In diesem Test müssen Sie als nächstes eine Frage erstellen. Dies wird die eigentliche ViPLab-Aufgabe. Klicken Sie hierzu zunächst im Reiter oben auf "Fragen" und dann auf "Frage erstellen"

Frage erstellen

Im darauf erscheinenden Dialog wählen Sie als Fragentyp "ViPLab Frage" und klicken Sie auf "Erstellen":

VipLab erstellen

Auf die gleiche Weise können Sie auch ViPLab-Fragen zu bestehenden Tests hinzufügen, oder eine ViPLab-Aufgabe mit weiteren Fragetypen kombinieren. Es ist etwa möglich, eine ViPLab-Aufgabe mit einem Multiple-Choice-Eingangstest zu kombinieren, in dem man zunächst das Grundwissen der Studierenden abfragt, bevor sie Zugang zur eigentlichen Programmieraufgabe bekommen.

Es erscheint darauf der Konfigurationsdialog für ViPLab-Aufgaben:

ViPLab-Dialog

Der "Titel" erscheint später als Titel der Aufgabe. Als Programmiersprache können Sie zwischen "C", "C++", "Java", "Octave", "DuMuX" und "MatLab" wählen. Achtung! Aus lizenzrechtlichen Gründen ist MatLab ist nur für Veranstaltungen der Universität Stuttgart nutzbar. In dem Auswahlfeld für die Programmiersprache kann fernern zwischen dem "Produktivsystem" und dem "Testsystem" unterschieden werden. Für eine stabile und gut gewartete Programmierumgebung wählen Sie bitte das Produktivsystem. Neue Features und aktuellere Versionen der Compiler und Software erhalten Sie zum Zwecke der internen Evaluation mit dem Testsystem. Neue Versionen können Sie also gerne mit dem Testsystem ausprobieren, sobald wir von unseren Nutzern genügend Rückmeldungen gesammelt haben, wird das Testsystem dann zum Produktivsystem.

Die Bearbeitungsdauer erlaubt eine Zeitbeschränkung eines Testdurchganges, etwa zum Zwecke einer elektronsichen Klausur. Wählen Sie hier einen genügend langen Zeitraum, und bedenken Sie, dass Studierende vielleicht zum ersten Mal programieren.

Die Punktzahl definiert die maximal vergebbare Punktzahl für eine studentische Lösung einer Aufgabe.

Das Häckchen  hinter "Speichern der Rechenergebnisse" erlaubt zusätzlich zur eingereichten studentischen Lösung auch die Ergebnisse einer Berechnung als Teil der Lösung abzuspeichern. Wird dieses Häckchen nicht gesetzt, steht bei einer manuellen Nachkorrektur nur der studentische Quellcode zur Verfügung, und zur Kontrolle der Korrektheit einer Lösung muss der Rechenvorgang erneut angestoßen werden. Wird das Häckchen gesetzt, wird zusätzlich die Ausgabe der studentischen Lösung abgespeichert und ist sofort einsehbar. Hier ein Häckchen zu setzen ist dann sinnvoll, wenn typische Lösungen lange Rechenzeiten benötigen und davon ausgegangen werden muss, dass diese Rechenzeiten bei einer manuellen Nachkontrolle nicht tolerierbar sind. Entsprechend steigt aber auch der Speicherbedarf im ILIAS-System. Sind die Rechenergebnisse also typischerweise sehr umfangreich, sollte dieses Häcken nicht gesetzt werden.

Über die "Automatische Korrektur" kann eine vollautomatische Bepunktung einer studentischen Lösung angestoßen werden. Hierzu muss die Aufgabenstellung allerdings entsprechend präpariert werden und einen Algorithmus beinhalten, der eine solche Punktzahl ermittelt. Dazu unten mehr.

Die eigentliche Bearbeitung des Aufgabeninhaltes erfolgt durch den Knopf "Starte Editor".

Bearbeiten des Quelltextes

Der "Starte Editor"-Knopf lässt den folgenden Quellcode-Editor erscheinen:

Editor

 Mit der Spalte ganz links werden die Übersetzungseinheiten einer Aufgabe verwaltet. Dies entspricht in etwa Dateien in einem Dateisystem. Wird der Editor gestartet, so ist zunächst nur eine Übersetzungseinheit vorhanden, hier mit dem Namen "Quellcode.c". Durch Rechtsklick in diese Spalte können weitere Übersetzungseinheiten hinzugefügt werden, etwa wenn ein Programm aus mehreren "Quellcode-Dateien" besteht. Ebenso unterscheiden manche Programmiersprachen zwischen "Headern", die nur Deklarationen enthalten sollten, und "Quellcode", welcher ausDefinitionen und Programmcode besteht. Ferner lassen sich auch Übersetzungseinheiten anlegen, die aus reinem Text bestehen und die etwa Rohdaten für die weitere Verarbeitung durch die Studierenden enthalten. Diese sind dann innerhalb der Ausführungsumgebung unter dem gegebenen Namen als Dateien verfügbar. Durch Rechtsklick auf einen Namen kann die entsprechende Übersetzungseinheit umbenannt oder gelöscht werden.

In den mittigen Feldern steht der zu bearbeitende Quellcode.Zunächst ist dieser Bereich komplett leer, Sie müssen zunächst mit dem Knopf "Element hier hinzufügen" einen weiteren Zeilenblock, hier genannt Element, in die Übersetzungseinheit aufnehmen. Eine Übersetzungseinheit besteht logisch aus mehrenen Elementen die in der auf dem Bildschirm angezeigten Ordnung hintereinander gehängt werden und damit das zu compilierende und auszuführende Programm definieren. Man beachte hier insbesondere die durchgehenden Zeilennummen im Bild oben.

Jedes Element kann "edierbar", "konstant" oder "unsichtbar" sein: Im ersten Fall kann der Inhalt durch Studierende verändert werden. Edierbare Elemente nehmen also die studentische Lösung auf. Sie können in diese Blöcke bereits Quellcode eintragen, der als Vorlage für eine Lösung dienen soll. Entsprechend ist es sinnvoll, hier zum Testen der Aufgabe bereits eine Musterlösung einzutragen, die Sie bei Fertigstellung der Aufgabe natürlich wieder entfernen sollten. Im obigen Bild ist bereits eine Lösung eingetragen, diese muss vor dem Abspeichern wieder entfernt werden.

Konstante Elemente werden zwar angezeigt, können aber von den Studierenden nicht verändert werden und erscheinen in der Bearbeitungsmaske später grau hinterlegt. Präprozessoranweisungen der Programmiersprache C können nicht Teil einer studentischen Lösung sein und müssen daher in konstante Elemente aufgenommen werden. Andere Einsatzgebiete für konstante Elemente sind fest vorgegebene Programmteile, Programmgerüste oder auch Rohdaten, die von Studierenden nicht verändert werden sollen.

Unsichtbare Elemente werden später nicht angezeigt und können auch nicht verändert werden. Sie können Codeteile enthalten, die aus didaktischen Gründen nicht gezeigt werden sollen. Typischerweise sind dies Codeteile, die etwa Plot-Funktionalitäten für ViPLab bereitstellen und die graphische Ausgabe in das ILIAS-Fenster aufnehmen.

Mit den Knöpfen "Element hierüber hinzufügen" und "Dieses Element entfernen" können Elemente gelöscht oder leere Elemente an beliebiger Stelle eingefügt werden. 

Über den Knopf "Berechnung starten" kann die Aufgabe an die Server der Universität Stuttgart abgeschickt werden. Die Ausgabe erscheint dann in einer neuen Spalte rechts vom Quelltext.

Die Entwicklung von Aufgaben mit automatischer Auswertungsfunktion wird weiter unten separat beschrieben.

Mit den nach links und rechts weisenden Pfeilen oben links im Fenster kann die letzte Eingabe rückgängig gemacht, bzw. wiederholt werden. Dies entspricht den klassischen "Undo" und "Redo" Funktionen eines typischen Texteditors.

Mit dem Diskettensymbol rechts können die Inhalte der edierbaren Elemente herunter- oder heraufgeladen werden. Diese erscheinen dann als ZIP-Datei auf dem lokalen Computer. Innerhalb der ZIP-Datei entspricht jedes Verzeichnis einer Übersetzungseinheit, welches die Elemente als jeweils separate Dateien enthält. Eine ZIP-Datei mit passender Struktur kann über diesen Knopf auch wieder hochgeladen werden. Alternativ kann man den Inhalt der Elemente auch mit Copy & Paste über die Zwischenablage des Browsers sichern oder einfügen.

Über den Knopf "Konfiguration" kann man spezifische Einstellungen für die jeweilige Programmiersprache wählen, wie etwa Compiler- oder Linker-Optionen. Entsprechend lässt sich die Laufzeitbeschränkung einer studentischen Lösung konfigurieren.

Für viele Programmiersprachen lässt sich dort auch der Funktionsfilter definieren. Diese Filterung schließt bestimmte Funktionen von der Nutzung durch Studierende aus. Dies ist etwa dann sinnvoll, wenn eine gegebene Aufgabe ohne die Nutzung von Bibliotheksfunktionen durch Studierende implementiert werden soll, bespielsweise eine Sortierung ohne den qsort()-Algorithmus der Standardbibliothek oder eine numerische Approximation der Winkelfunktionen ohne die sin() und cos()-Funktionen der Mathematikbibliothek des Systems. Die Funktionsfilterung steht momentan nicht für C++ zur Verfügung.

Über den Knopf "Speichern" kann eine hinreichend getestete Aufgabe im ILIAS-System abgelegt werden. Bevor jedoch ein ViPLab-Test benutzt werden kann, muss dieser "Online" geschaltet werden.

Aktivieren eines erstellten ViPLab-Tests

Nach dem Speichern einer erstellten Aufgabe klicken Sie zunächst in der Zeile oberhalb des Konfigurationsdialoges auf den Knopf "Zurück zum aufrufenden Test"

Zurück

und wählen Sie dann in der gleichen Leiste den Punkt "Einstellungen":

Einstellungen

Unter der Überschrift "Verfügbarkeit" stellen Sie jetzt diesen Test auf "Online":

Online

Speichern Sie jetzt diese Änderungen über den Knopf "Speichern" ganz oben oder ganz unten auf dieser Seite ab.

Speichern

 Damit ist der Test verfügbar. Über die Knöpfe "Fragen" und "Test starten" kann jetzt ein Durchlauf durch den Test probiert werden.

Starten

Durchführung eines Tests

Für die Testdurchführung wird ein zur Testerstellung vergleichbarer Editor verwendet, nur sind die konstanten Codeteile hier grau unterlegt und können nicht ediert werden. Wie oben lässt sich mit dem Knopf "Berechnung starten" ein Durchlauf des Algorithmus durchführen. Die Lösung geben Studierende mit dem Knopf "Speichern und weiter" ab. Damit ist die ViPLab-Frage eines Tests beantwortet.

Aufgabe

 Manuelle Nachbewertung einer studentischen Lösung

Ist die automatische Korrektur (s. unten) abgeschaltet oder besteht Zweifel an der Bepunktung durch die automatische Bewertungsfunktion, so besteht die Möglichkeit, die studentische Lösung einzusehen und selbst eine Punktzahl zu vergeben. Gehen Sie dazu zunächst zurück auf den Test und drücken Sie auf der oberen Leiste den Knopf "Manuelle Bewertung":

Manuelle Bewertung

 Wählen Sie danach den Teilnehmer, dessen Punktzahl Sie einsehen oder ändern möchten:

Ändern

und klicken Sie auf "Ändere Bewertung". Im daraufhin erscheinenden Dialog lässt sich erneut der Editor starten, der dem bei der Aufgabenerstellung benutzten Dialog gleicht. Dort erscheint dann die studentische Lösung der Aufgabe, und - falls bei der Aufgabenerstellung angewählt - die Ausgaben des studentsichen Programmes.

Punktzahl

Ansonsten kann hier erneut die Berechnung gestartet oder die automatische Bewertung angeworfen werden.

Automatische Bewertung von studentischen Lösungen

Bei hohen Teilnehmerzahlen eines ILIAS Kurses ist eine manuelle Nachkorrektur aller Aufgaben oft nicht mehr sinnvoll durchführbar, und eine automatische Korrektur wünschenswert. ViPLab bietet diese Möglichkeit, es ist jedoch zunächst notwendig, die zugrunde liegenden Prinzipien zu verstehen und die Aufgaben entsprechend dieser Möglichkeiten auf das System hin zu entwickeln. ViPLab setzt zur Bewertung von Aufgaben nicht auf sonst übliche Unit-Tests ein, sondern arbeitet auf der Basis von Code-Ersetzungen.

Für eine automatische Korrektur kann ViPLab alle konstanten und unsichtbaren Elemente aller Übersetzungseinheiten durch alternative Codeteile ersetzen, die zusätzlich zu ihren eigentlichen Aufgaben dann noch Bewertungsfunktionalitäten übernehmen. Edierbarer Code kann nicht ersetzt werden, da er ja die von den Studierenden zu erstellende Lösung enthält.

Es bietet sich zu diesem Zweck an, die Aufgaben derart zu strukturieren, dass ein vom Dozenten erstellter konstanter Codeteil eine von den Studierenden zu erstellende Funktion aufruft. Im Rahmen der Durchführung einer Übung druckt der konstante Codeteil das Ergebnis einer Berechnung nur aus. Soll nun der studentische Code geprüft werden, so geschieht dies durch Austausch des bisherigen aufrufenden Codeelementes durch ein Element, welches den studentischen Code mit Testdaten versorgt und die Richtigkeit der Lösung kontrolliert. Anhand dieser Lösung muss nun dieser Codeteil selbst eine Punktzahl ermitteln.

Ein Beispiel verschafft Klarheit: Korrektur1

Diese Aufgabe besteht aus einem konstanten Header, einer studentischen Lösung - hier rot eingerahmt - und einem konstanten Hauptprogramm. Um die Aufgabe fertig zu stellen, müsste man nun im rot umrahmten Bereich den Funktionsinhalt "return x*x" entfernen.

Eine automatische Korrektur lässt sich nun so herstellen, indem man für den Korrekturvorgang das Hauptprogramm, hier das untere Element, durch eine Bewertungsfunktion ersetzt.Schalten Sie hierzu zunächst die automatische Korrekturfunktion in der Maske zur Fragenerstellung ein:

Anschalten

Danach muss ein Korrekturcode für die Durchführung der Bewertung erstellt werden. Hierzu soll das reguläre Hauptprogramm durch ein Programm zur Bewertung ersetzt werden. Klicken Sie dazu auf den Knopf "Korrekturcode hinzufügen" oberhalb des unteren Elementes, welches das Hauptprogramm repräsentiert:

Korrektur anlegen

Der darunterliegende Codeteil, also das Hauptprogramm, wird danach zweigeteilt. Das linke Element besteht dabei aus dem Hauptprogramm bei der Durchführung der Übung, das Element rechts daneben aus dem Code, der zum Zwecke der Bewertung herangezogen wird.

Korrektur2

Im Bild oben wurde im rechten Element bereits ein Korrekturcode hinzugefügt. Dieser Code erzeugt nun ein Test-Datum, hier die 3, ruft damit den studentischen Code auf, und prüft das Ergebnis auf Korrektheit. Ausgehend davon wird ein Punktzahl ermittelt und der Variable "score" zugewiesen. Die Punktzahl wird dann auf die Konsole gedruckt, von wo aus ViPLab sie in ILIAS übernimmt.

In realistischen Beispielen verwenden Sie bitte bessere Daten zum Testen. Das Bespiel oben dient nur der Veranschaulichung, typischerweise würde man etwa eine Zahl aus einem Zufallsgenerator ziehen, das korrekte Ergebnis durch die Musterlösung berechnen lassen und dann das Ergebnis der Musterlösung mit der studentischen Lösung vergleichen.

Die Ausgabe der Punktzahl sollte die letzte Ausgabe des Programmes sein. Vermeiden Sie also insbesondere, von Studierenden erstellte Funktionen nach der Ermittlung der Punktzahl aufzurufen.

Die Korrektheit des Bewertungsalgorithmus können Sie mit dem Knopf "Automatische Auswertung testen" überprüfen. Der Editor zeigt daraufhin die ermittelte Punktzahl im Browser an.

ACHTUNG!  Das ViPLab-Bewertungs-System arbeitet prinzipbedingt asynchron, d.h. die Testergebnisse stehen nicht direkt nach der Abgabe der Aufgabe zur Verfügung, sondern erst, nachdem der Korrekturserver eine Punktzahl hat ermitteln können. Dies führt dazu, dass Studierende direkt nach der Abgabe einer Frage noch nicht die ermittelte Punktzahl sehen können.

Um Verwirrungen zu vermeiden, ist es aus diesem Grunde sinnvoll, einen direkten Einblick in die Punktzahl nach Abschluss eines Testes auszuschalten und die Punktzahl erst im Rahmen einer Einsicht oder dem Ablauf einer gewissen Blockzeit bekannt zu geben.

Klicken Sie hierzu zunächst in der Maske zur Erstellung von Fragen auf "Einstellungen", und dann auf "Auswertung":

Auswertung

Scrollen Sie nun etwas nach unten, und wählen Sie im Block "Bekanntgabe des Testergebnisses" die Option "Ab definiertem Datum":

TestNachDatum

Speichern Sie danach die Änderungen mit dem Knopf "Speichern" oben rechts in der Webseite:

Speichern2

Hiermit wird das oben beschriebene Problem vermieden.