Closed nimec01 closed 7 months ago
Bzgl. SubTreeSet war das Verhalten gewünscht. Es stimmt ja auch nicht, dass nur "schon bekannte" Sachen ausgegeben werden. Nehmen wir an, es gibt 10 Teilbäume, aber es werden nur 5 verlangt. Dann kann eine korrekte Einreichung aus 5 Teilbäumen bestehen. Aber im Feedback wird dann (absichtlich) gesagt: Hier sind alle 10 Teilbäume, und 5 davon hätten genügt. Den Lernenden werden also auch die 5 Teilbäume angezeigt, die sie nicht selbst eingegeben haben. Das ist nicht redundant.
Bzgl. Fill frage ich mich gerade, ob es überhaupt noch sinnvoll ist, die Spezialbehandlung für "lange Eingaben" drinzuhaben. Das wurde (eventuell) eingebaut, als noch nicht in partialGrade
auf die Längen geprüft wurde. Also etwa:
partialGrade
).completeGrade
) wird dann darauf geachtet ("Oh, es wurden 8 eingegeben. Der Student hatte wohl nicht kapiert, dass nur die Lücken gefragt sind. Gut, dann behandeln wir das so, dass wir für dieses Missverstehen kompensieren.")Mittlerweile aber findet für den Aufgabentyp ja mehr in partialGrade
statt. Da kann genausogut eine Eingabe mit 8 Werten einfach direkt zurückgewiesen werden. Also wer 8 eingibt, kriegt gesagt: "Diese Eingabe nehmen wir nicht an. Es sind 5 Lücken. Also bitte gib genau 5 Werte an."
Damit dürfte einiges an Sonderfällen im Code verschwinden.
(Vielleicht ist auch noch gut zu wissen, was in Autotool passiert. Vor der Deadline: Wenn ein Student etwas eingibt, das partialGrade
nicht erfüllt, dann wird es zurückgewiesen. Die Eingabe wird nichtmal abgespeichert. Es wird dafür also nie Punkte geben. Nach der Deadline: Es wird partialGrade
nochmal ausgeführt, um dessen Ausgaben mit im Report zu haben. Fehlschlagen kann partialGrade
aber nicht mehr. Denn dann wäre überhaupt keine Lösung in der Datenbank abgespeichert gewesen. Anschließend wird noch completeGrade
ausgeführt, für sein zusätzliches Feedback und für die Vergabe von Punkten. Es gilt somit auch als Invariante: Es wird nie completeGrade
auf einer Einreichung ausgeführt, die nicht erfolgreich durch partialGrade
durchkommt. Das muss bedacht werden, wenn Aufgabentypen mit Debug
ausgeführt werden. Denn dort wird die completeGrade
-Ausgabe auch angezeigt wenn partialGrade
zu Nothing
führte. In der Autotool-Realität gibt es diese Situation nicht.)
Es wird nie completeGrade auf einer Einreichung ausgeführt, die nicht erfolgreich durch partialGrade durchkommt.
Das bedeutet ja auch, dass bei diesen Einreichungen kein Lösungsvorschlag angezeigt wird (wenn printSolution
entsprechend konfiguriert ist). Ist das so gewollt? Also: "Wenn die Eingabe eines Studenten nicht einmal partialGrade erfüllt, so erhält er auch keinen Lösungsvorschlag".
Ja. Die grundsätzliche Philosophie (in Autotool) ist, dass in partialGrade
nur "Syntaxfehler" oder "praktisch-sowas-wie-Syntaxfehler" abgelehnt werden. Also wenn sich Studierende praktisch gar keine Mühe geben, eine sinnvolle Eingabe hinzukriegen. (Etwa: Wir fragen nach 5 Werten, aber es werden 8 hingeschrieben. Trotz wiederholten Hinweises, doch bitte genau 5 Werte einzugeben.)
Also partialGrade
ist dazu da, die Studierenden dahin zu "coachen", dass sie am Ende eine Eingabe gemacht haben, die überhaupt erstmal sinnvoll zu interpretieren ist. Niemand soll wegen Nicht-Verstehen des Stoffes an partialGrade
scheitern, höchstens wegen hartnäckigen Ignorierens der Eingabehinweise.
Wie in #92 schon angeschnitten, gab es noch bei ein paar Aufgabentypen Verbesserungsmöglichkeiten.
SubTreeSet:
Fill:
IllegalCNF:
showSolution
wurde immer aufFalse
gesetzt. Jetzt nimmt er den entsprechenden Wert vonprintSolution
aus der Config an.