Hinweise zur Benutzung der Programmieraufgaben für Lehrende
Der Praktomat überprüft studentische
Einreichungen von Source-Code anhand von Tests (JUnit, Checkstyle,
Compiler), die von Lehrenden eingerichtet werden.
Beispiel-Aufgaben in
LON-CAPA
- /res/fhwf/ecult/Java - ca. 20 einfache Java-Programmieraufgaben,
z.B. Hello World, Fibonacci-Rekursion, richtiges Formatieren,
Berechnung der Fakultät, arithmetisches Mittel
- /res/fhwf/ecult/PythonMath - Berechnung der Fakultät in Python,
Kurvenlänge und Riemannsche Trapezregel
- /res/fhwf/ecult/setlx - ca 25 Mathematikaufgaben in der
SetlX-Programmiersprache, z.B. Aufgaben zur Mengenlehre, Logik,
Funktionen, Relationen, Graphentheorie und Gruppentheorie
Anlegen einer Programmieraufgabe
in LON-CAPA
Zunächst sollte die Aufgabe mit
dem Editor
erstellt und als XML-Datei gespeichert werden. Dann kann die Aufgabe im Autorenbereich
in LON-CAPA wie folgt angelegt werden:
- Mit diesem Python-Script kann aus dem
XML-Format eine LON-CAPA-Problem-Datei erzeugt werden und umgekehrt. Der
Aufgabentext, die Musterlösung und eine mögliche Code-Schablone müssen dann
noch von Hand in die Problem-Datei eingefügt werden.
- Die Datei in LON-CAPA als Problem-Datei anlegen.
- Die Aufgabe speichern und ansehen. Durch Hochladen mindestens
jeweils einer falschen und einer richtigen Lösung sollte die Aufgabe
getestet werden.
- Danach kann die Aufgabe veröffentlicht werden (bitte Metadaten
eintragen).
Beispiel einer Problem-Datei in LON-CAPA
Die blauen Felder sind zu ersetzen.
<problem>
<import id="11">/res/fhwf/ecult/lib/proforma_v3.library</import>
<import id="91">/res/fhwf/ecult/lib/SyntaxHighlighter/CodeMirror_Header.library</import>
<script type="loncapa/perl">
$externalurl = &proforma_url(0,'0', 'textfield', 'dateiname.java','x-java','','v2.0.0');
$ausgabe = &proforma_output(0,1);
$args{'task'}='BASE64-codierte task.xml';
$modelsolution = '<pre>Musterlösung</pre>';
</script>
<startouttext />
<p>Aufgabentext</p>
<endouttext />
<startouttext />
$error
$ausgabe
<div id="codemirror-textfield">
<endouttext />
<externalresponse answer="" url="$externalurl" form="%args" id="1">
<textfield>
Hier kann eine Code-Schablone stehen
</textfield>
</externalresponse>
<startouttext />
</div>
<endouttext />
<postanswerdate><startouttext /><pre>
$modelsolution</pre><endouttext /></postanswerdate>
<import id="92">/res/fhwf/ecult/lib/SyntaxHighlighter/CodeMirror_Footer.library</import>
</problem>
Tipps für Aufgabentexte bei
Aufgaben mit JUnit-Tests
Bei automatisch bewerteten Programmieraufgaben mit JUnit-Tests muss
die Aufgabenbeschreibung genau mit dem übereinstimmen, was auch
getestet wird. Insbesondere müssen folgende Angaben gemacht
werden:
- Name der Klasse
- Name der Methode
- Ein- und Ausgabeparameter der Methode (in Worten beschrieben
oder per Signatur angegeben)
- Falls die Tests Fehlerfälle überprüfen, muss angegeben werden,
was die jeweiligen Ausgaben der Methode sind. Zum Beispiel: "Im Fall
von negativen Zahlen soll die Methode 0 zurückgeben."
Beispiel eines Aufgabentexts:
Schreiben Sie eine Klasse "Fakultaet",
die die Fakultät (n!) einer Zahl n berechnet. Diese Klasse soll eine
Methode "fakultaet" enthalten, welche eine ganze Zahl übergeben
bekommt und für diese die Fakultät berechnet und zurück gibt. Im Fall
von negativen Zahlen soll die Methode 0 zurückgeben.
FAQ bezüglich Programmieraufgaben in
LON-CAPA
- Wie erstellt man solche Aufgaben? Siehe oben.
- Wie viele Versuche sollte eine Programmieraufgabe erhalten? Am
besten nicht mehr als drei. Die Studierenden sollten die Aufgabe
erst in einer normalen Programmierumgebung lösen, bevor sie sie
hochladen. LON-CAPA soll nicht als Compiler-Ersatz dienen, sondern
die fertigen Lösungen entgegennehmen und bewerten.
- Wie kann es zu Fehlern bei der Erstellung der Aufgabe kommen?
Verwenden Sie keine Umlaute im Dateinamen der
Aufgabendatei. Zulässige und empfohlene Zeichen sind: a-z, A-Z, 0-9,
-, _ Beim Veröffentlichen können Sie im "Titel" beliebige Zeichen
verwenden. Dieser Titel wird später den Studierenden im Kurs
angezeigt.
- Wie kann man ein Code-Template erstellen, das von den Studenten
ergänzt werden soll? Im XML Editor kann das Code-Template in das
<textfield> eingetragen werden.
- Tipps
für Checkstyle, JUnit
und DejaGnu (in Englisch).
- Codemirror in LON-CAPA Aufgaben (in Englisch)
Software und Dokumente der ProFormA-Gruppe der Ostfalia
https://elearning-ostfalia.github.io/proforma/
Dieses Vorhaben wurde aus Mitteln des Bundesministeriums für Bildung und
Forschung unter den Förderkennzeichen 01PL11066H und 01PL16066H gefördert.
Die Verantwortung für den Inhalt dieser Webseite liegt bei den Autorinnen.