fmidue / logic-tasks

0 stars 1 forks source link

Feedback anpassen #94

Closed nimec01 closed 7 months ago

nimec01 commented 7 months ago

Wie in #92 schon angeschnitten, gab es noch bei ein paar Aufgabentypen Verbesserungsmöglichkeiten.

SubTreeSet:

Fill:

IllegalCNF:

jvoigtlaender commented 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.

jvoigtlaender commented 7 months ago

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:

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.

jvoigtlaender commented 7 months ago

(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.)

nimec01 commented 7 months ago

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".

jvoigtlaender commented 7 months ago

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.