Die Integration von Korrekturdiensten in Dynexite ermöglicht es Benutzer*innen, Eingaben Studierender automatisch bewerten zu lassen. Dabei führt der gewählte Korrekturdienst abhängig von der Konfiguration die Korrektur durch und liefert ein Ergebnis zurück - er ersetzt also die reguläre Korrektur.
Für jeden Eingabeblock oder Lücke in einer Aufgabe wird individuell festgelegt, ob bzw. welcher der verfügbaren Korrekturdienste eingesetzt wird. Nach dem Klick auf das Korrekturdienste-Symbol (1) öffnet sich die Seitenleiste mit dem Register Korrektur. Hier kann der Korrekturdienst ausgewählt werden (2).
Bei Lückentext-Aufgaben ist die Auswahl des Korrekturdienstes pro Lücke möglich. Nach dem Klick auf eine Lücke (1) öffnet sich die Seitenleiste. Im Register Korrektur (2) kann dann der Korrekturdienst ausgewählt werden (3).
Der Index der vorgegebenen Antwortmöglichkeiten beginnt mit 0. Um im Quellcode für den ausgewählten Korrekturdienst Bezug auf die Antwortmöglichkeiten nehmen zu können, verwenden Sie für die Antwortmöglichkeit an erster Stelle die 0, für die Antwortmöglichkeit an zweiter Stelle die 1 etc. Im Code nehmen Sie demnach mit answer == 2
Bezug auf die Antwortmöglichkeit an dritter Stelle.
Der Index bleibt auch dann unverändert, wenn die Antwortmöglichkeiten den Studierenden in zufälliger Reihenfolge angezeigt werden (durch Aktivieren von Optionen mischen im Einstellungsmenü der Aufgabe).
Es ist möglich, einen Bewertungskommentar zu setzen. Verwenden Sie entweder None ("manuelle Korrektur nötig")
, einen Wert zwischen 0 und 1 oder die Struktur {result, comment}
, z.B. {"result": 0.5, "comment": "Ein Bewertungskommentar"}
.
In Dynexite werden die Bestandteile einer Aufgabe (z.B. Teilaufgaben, weitere Eingabeblöcke oder Lücken) im Rahmen des Korrekturdienstes als Elemente bezeichnet. Sie können einem Element einen Namen geben, indem Sie auf das Stifte-Symbol neben der Überschrift im Register Korrektur klicken.
Es muss mindestens ein anderes Element mit ausgewähltem Korrekturdienst geben, damit ein Name gesetzt werden kann. Alle anderen Elemente einer Aufgabe, die einen Korrekturdienst verwenden, sind in einer Tabelle unterhalb des Quellcode-Felds aufgeführt:
Von Studierenden eingegebene oder ausgewählte Antworten werden mit Hilfe eines Python3-Skripts korrigiert. Dies ermöglicht beispielsweise die Berücksichtigung von Folgefehlern oder die Vergabe von Teilpunkten.
Dieser Korrekturdienst steht Ihnen bei folgenden Aufgabentypen zur Verfügung:
Aufgabentyp | Beispielaufgabe | Was zeigt das Beispiel? |
---|---|---|
Codeeingabe-Aufgabe | Beispielaufgabe | Überprüfen von Code auf Korrektheit. |
Einfachauswahl-Aufgabe | Beispielaufgabe | Berücksichtigung von Folgefehlern. |
Ergebniseingabe-Aufgabe | Beispielaufgabe | Überprüfen von Berechnungen. Werte in der Aufgabenstellung sind dabei zufällig generiert (Parametrisierung). |
Freitext-Aufgabe | Beispielaufgabe | Durchsuchen von Text, Vergabe von Teilpunkten. |
Hotspot-Aufgabe | Beispielaufgabe | Vergabe von Teilpunkten (bei diesem Aufgabentyp ohne Korrekturdienst nicht möglich). |
Klassifikations-Aufgabe | Beispielaufgabe | Punktevergabe nur dann, wenn alle Antworten korrekt sind. |
Lückentext-Aufgabe | Beispielaufgabe | Gruppierung von Lücken. |
Mehrfachauswahl-Aufgabe | Beispielaufgabe | Vergabe von Teilpunkten (bei diesem Aufgabentyp ohne Korrekturdienst nicht möglich). |
Tabellenlücken-Aufgabe | Beispielaufgabe | Überprüfen von Berechnungen. |
Es handelt sich hierbei um stark vereinfachte Beispiele, welche in erster Linie den Einsatz des Korrekturdienstes veranschaulichen sollen.
Benutzer*innen mit der Rolle Administrator können eine Datei mit allen Beispielaufgaben hier herunterladen und dann über die Import/Export-Funktion in Dynexite integrieren.
Diese Beispielaufgabe zeigt, wie mit Hilfe des Korrekturdienstes festgelegt werden kann, dass bei falschen Eingaben noch Teilpunkte für korrekte Codebestandteile erzielt werden. Die Studierenden sollen zwei Variablen nach bestimmten Vorgaben erstellen. Dabei erzielen sie auch dann noch Punkte, wenn sie ein in der Aufgabenstellung nicht geforderten Ausrufezeichen hinter "Hallo Welt" einfügen.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Codeeingabe-Aufgabe.
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst Python3 auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Geben Sie Folgendes in das Quellcode-Feld ein:
if "test" not in answer or "Hallo Welt" not in answer or "Hallo Test" not in answer:
return 0
if 'test' in answer and 'Hallo Welt' in answer and '!' not in answer:
return 1
elif 'test' in answer and 'Hallo Welt' in answer and '!' in answer:
return 0.5
return 0
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Diese Beispielaufgabe zeigt, wie Folgefehler berücksichtigt werden können. Bei den Studierenden wird zunächst Wissen abgefragt ("Was ist die Richtgeschwindigkeit auf deutschen Autobahnen?"), anschließend müssen sie mit dem angegebenen Wert eine Rechnung durchführen ("Wie lange ist die Fahrtzeit von Hamburg nach München bei Richtgeschwindigkeit?"). Für die Berechnung der zweiten Teilaufgabe wird also die Antwort der ersten Teilaufgabe verwendet.
Mit Hilfe des Korrekturdienstes können auch Studierende, deren erste Antwort falsch war, Punkte für die richtige Berechnung der zweiten Teilaufgabe erzielen.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Aufgabe bestehend aus zwei Teilaufgaben vom Typ Einfachauswahl.
Klicken Sie in der ersten Teilaufgabe auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst auszuwählen.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Wiederholen Sie Schritt 2 für die zweite Teilaufgabe.
Vergeben Sie nun Namen für die beiden Teilaufgaben (Elemente). Klicken Sie hierzu auf das Korrekturdienste-Symbol der ersten Teilaufgabe. Klicken Sie dann auf das Stift-Symbol neben der Überschrift Korrektur: Unbenanntes Element und tragen Sie den Namen "Richtgeschwindigkeit" ein.
Das Benennen der Elemente erhöht die Übersichtlichkeit bei der Bezugnahme auf diese bzw. deren Antwortmöglichkeiten im Code.
Wiederholen Sie Schritt 4 für die zweite Teilaufgabe. Geben Sie diesem Element den Namen "Fahrtdauer".
Klicken Sie erneut auf das Korrekturdienste-Symbol der ersten Teilaufgabe und tragen Sie folgenden Code in das Quellcode-Feld für dieses Element ein:
if answer == 2:
return 1
return 0
Der Index der Antwortmöglichkeiten beginnt mit 0.
answer == 2
bezieht sich also auf die korrekte Antwortmöglichkeit, für deren Auswahl es 1 Punkt gibt (return 1
), während für die anderen Antworten keine Punkte vergeben werden (return 0
).
Klicken Sie nun auf das Korrekturdienste-Symbol der zweiten Teilaufgabe und tragen Sie folgenden Code in das Quellcode-Feld ein:
if Richtgeschwindigkeit == 0 and answer == 2:
return 1
elif Richtgeschwindigkeit == 1 and answer == 1:
return 1
elif Richtgeschwindigkeit == 2 and answer == 0:
return 1
return 0
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Dieses Beispiel zeigt eine Kombination aus Parametrisierung und Korrekturdienst. Die Studierenden sollen die Wurzel aus vorgegebenen Werten ziehen. Die Werte werden via Parametrisierung generiert, d.h. sie werden aus einer vorgegebenen Reihe an Zahlen zufällig ausgewählt. Die Berechnung der Wurzel durch die Studierenden wird über den Korrekturdienst mit Hilfe von Code überprüft.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Ergebniseingabe-Aufgabe mit drei Frageblöcken, tragen Sie dabei der Schreibweise für Parametrisierungen folgend die Variablen {{ x }}
, {{ y }}
und {{ z }}
in die Textfelder für die Fragestellungen ein.
Klicken Sie in der Seitenleiste auf das Symbol </>. Der Bereich Parametrisierung öffnet sich. Geben Sie folgenden Code in das Quellcode-Feld ein:
x = dynexite.choice([4, 9, 16])
y = dynexite.choice([64, 81, 121])
z = dynexite.choice([2025, 6561, 3025])
Fahren Sie nun mit dem Konfigurieren der Lücken fort, indem Sie pro Lücke einen Korrekturdienst auswählen und konfigurieren. Klicken Sie hierzu auf die erste Lücke (1). Das Konfigurationsmenü in der rechten Seitenleiste öffnet sich. Ändern Sie die Art der Lücke über das gleichnamige Drop-down-Menü in den Typ Zahlen (2). Klicken Sie dann im Seitenleistenmenü auf das Symbol Korrekturdienste (3).
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr eingeben oder manuell markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Geben Sie Folgendes in das Feld Quellcode ein:
import math
if answer == math.sqrt(int(x)):
return 1
return 0
Wiederholen Sie Schritt 3 und 4 für alle weiteren Lücken. Ändern Sie an folgender Stelle entsprechend der in der Fragestellung verwendeten Variablen im Quellcode das x in y bzw. z: (int(x)):
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Dieses Beispiel zeigt, wie der Korrekturdienst einen Freitext auf bestimmte Antworten durchsucht und hierfür Teilpunkte vergeben werden. Die Studierenden sollen eine Anzahl von Begriffen nennen (hier: die Namen von drei deutschen Bundeskanzler*innen) und der Korrekturdienst vergleicht die Eingaben mit einer Liste korrekter Antworten. Pro richtiger Antwort wird 1 Teilpunkt vergeben bei maximal 3 erreichbaren Gesamtpunken.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Freitext-Aufgabe.
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Tragen Sie Folgendes in das Quellcode-Feld ein:
if answer == "" or answer is None:
return 0
result = 0
if "Adenauer" in answer:
result = result + 0.333
if "Erhard" in answer:
result = result + 0.333
if "Kiesinger" in answer:
result = result + 0.333
if "Brandt" in answer:
result = result + 0.333
if "Schmidt" in answer:
result = result + 0.333
if "Kohl" in answer:
result = result + 0.333
if "Schröder" in answer:
result = result + 0.333
if "Merkel" in answer:
result = result + 0.333
if "Scholz" in answer:
result = result + 0.333
if result > 0.99:
return 1
return result
Im Code steht
result
für den prozentualen Anteil an der Maximalpunktzahl. D.h. für jeden korrekt genannten Namen (bis maximal 3) gibt es 0.333 Punkte, daresult
maximal 1 betragen kann.
Dieses Beispiel zeigt, wie mit Hilfe des Korrekturdienstes festgelegt werden kann, dass Teilpunkte für korrekte Markierungen erzielt werden. Die Studierenden sollen fünf Stellen in einer Abbildung markieren. Ohne Verwendung eines Korrekturdienstes gäbe es nur dann Punkte, wenn alle fünf Stellen richtig markiert werden. Mit Korrekturdienst werden für jede richtige Markierung Punkte vergeben; bei mehr als 5 Klicks werden allerdings automatisch 0 Punkte erzielt (if len(answer) > 5: return 0
).
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Hotspot-Aufgabe und fügen Sie ein Bild hinzu.
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Tragen Sie Folgendes in das Quellcode-Feld ein:
# if a student selects more than 5 elemens, give 0 points
if len(answer) > 5:
return 0
# build the result
result = 0
for ans in answer:
# check if "Aufgabe bestellen" was found
if ans['x'] > 75 and ans['x'] < 140 and ans['y'] > 285 and ans['y'] < 340:
result = result + 0.2
# check if "(optional)" was found
elif ans['x'] > 185 and ans['x'] < 245 and ans['y'] > 190 and ans['y'] < 240:
result = result + 0.2
# check if wrong icon was found
elif ans['x'] > 385 and ans['x'] < 445 and ans['y'] > 210 and ans['y'] < 270:
result = result + 0.2
#check if "Eingabedock" was found
elif ans['x'] > 540 and ans['x'] < 600 and ans['y'] > 140 and ans['y'] < 200:
result = result + 0.2
# check if wrong eye icon was found
elif ans['x'] > 645 and ans['x'] < 705 and ans['y'] > 35 and ans['y'] < 95:
result = result + 0.2
return result
Um die Koordinaten einer Position auf dem Bild einzusehen, fahren Sie mit dem Mauszeiger darüber. Die Daten werden unten links angezeigt.
Im Code wird ein gültiger Markierungsbereich wie folgt angegeben:if ans['x'] > 75 and ans['x'] < 140 and ans['y'] > 285 and ans['y'] < 340:
Dieses Beispiel zeigt, wie mit Hilfe des Korrekturdienstes festgelegt werden kann, dass nur dann Punkte vergeben werden (return 1
), wenn die Antworten für alle Fragen korrekt ausgewählt wurden (if answer[0] == 1 and answer[1] == 0 and answer[2] == 2:
). Die Studierenden sollen drei Fragen beantworten, indem sie eine Antwort aus einer Reihe vorgegebener Möglichkeiten auswählen.
answer [0] == 1
bezieht sich auf die erste Frage des Beispiels ("Welcher Monat hat 31 Tage?"). Die korrekte Antwort hierauf ist die zweite der drei vorgegebenen Klassen (Februar, März, April). Die Nummerierung der Klassen beginnt bei 0, also wird die Antwort (März) hier durch den Bezug== 1
referenziert.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Klassfikations-Aufgabe. Die drei vorgegebenen Antwortmöglichkeiten (Klassen) in diesem Beispiel sind "Februar", "März" und "April".
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell eingeben oder markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Tragen Sie Folgendes in das Quellcode-Feld ein:
if answer[0] == 1 and answer[1] == 0 and answer[2] == 2:
return 1
return 0
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Dieses Beispiel zeigt, wie der Korrekturdienst den Gruppierungsmodus ersetzen kann. Die Studierenden sollen drei Lücken ausfüllen, wobei die Reihenfolge der Antworten egal ist.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Lückentext-Aufgabe mit 3 Textlücken.
Klicken Sie auf die erste Lücke (1). Die Seitenleiste öffnet sich. Klicken Sie dort auf das Korrekturdienste-Symbol (2) und dann auf den Button Benutzen (3), um den Korrekturdienst auszuwählen.
Klicken Sie im Bereich Korrekturdienste auf das Stift-Symbol neben "Unbenanntes Element" und vergeben Sie den Namen "Luecke1". Dies ermöglicht im Code die Bezugnahme auf das Element.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell eingeben oder markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Tragen Sie Folgendes in das Quellcode-Feld ein:
if answer == "" or answer is None:
return 0
cities = [
"Frankfurt am Main",
"Köln",
"München",
"Hamburg",
"Berlin",
"Stuttgart",
"Düsseldorf",
"Leipzig",
"Dortmund",
"Essen"
]
if answer in cities and Luecke2 != answer and Luecke3 != answer:
return 1
return 0
Wiederholen Sie die Schritte 2 bis 4 für die anderen beiden Elemente (Lücken).
Benennen Sie die beiden anderen Elemente als "Luecke2" bzw. "Luecke3", indem Sie auf das Stift-Symbol neben der Registerüberschrift Korrektur klicken. Ändern Sie dann im Quellcode der jeweiligen Lücke Zeile 16 wie folgt:
if answer in cities and Luecke1 != answer and Luecke3 != answer:
if answer in cities and Luecke1 != answer and Luecke2 != answer:
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Dieses Beispiel zeigt, wie durch den Einsatz des Korrekturdienstes für jede richtige Antwort Teilpunkte vergeben werden und nicht nur dann, wenn alle richtigen Antworten ausgewählt wurden (wie es bei Mehrfachauswahl-Aufgaben normalerweise der Fall wäre). Die Studierenden sollen also die richtigen Antworten aus einer Reihe vorgegebener Antwortmöglichkeiten auswählen. Wählen sie allerdings eine falsche Antwort aus, werden keine Punkte vergeben. Dies verhindert, dass alle Antworten angekreuzt werden, um ganz sicher die volle Punktzahl zu erhalten.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Mehrfachauswahl-Aufgabe.
Klicken Sie auf das Korrekturdienste-Symbol (1). Die Seitenleiste öffnet sich. Klicken Sie dann auf den Button Benutzen (2), um den Korrekturdienst auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell markieren kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
Tragen Sie Folgendes in das Quellcode-Feld ein:
result = 0
if answer[0] == True:
result = result + 0.5
if answer[1] == True:
result = result + 0.5
if answer[2] == True:
result = 0
if answer[3] == True:
result = 0
return result
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.
Dieses Beispiel zeigt, wie der Korrekturdienst eine Berechnung auf Korrektheit prüft. Die Studierenden sollen die Quersumme für drei vorgegebene Werte ermitteln.
Um die Aufgabe anzulegen, gehen Sie wie folgt vor:
Erstellen Sie eine Tabellenlücken-Aufgabe mit drei Zahlenlücken.
Klicken Sie auf die erste Lücke (1). Die Seitenleiste öffnet sich. Klicken Sie dort auf das Korrekturdienste-Symbol (2) und dann auf den Button Benutzen (3), um den Korrekturdienst auszuwählen.
Ein Quellcode-Feld und verschiedene Konfigurationselemente werden angezeigt.
Sobald du den Korrekturdienst auswählst, werden die Standard-Korrektureinstellungen für die Aufgabe deaktiviert. Das bedeutet z.B., dass du die korrekten Antworten nicht mehr manuell oder markieren eingeben kannst. Stattdessen musst du den entsprechenden Code im Konfigurationsfenster des Korrekturdienstes hinterlegen.
value = sum(int(y) for y in str(answer))
if value == 8:
return 1
return 0
Wiederholen Sie die Schritte 2 und 3 für die beiden anderen Lücken.
Passen Sie im Quellcode der beiden anderen Lücken den Code an der Stelle if value == 8:
mit dem vorgegebenen Wert der jeweiligen Lücke (also if value == 10:
bzw. if value == 15:
) an.
Die Aufgabe ist nun fertig konfiguriert. Klicken Sie auf Vorschau um zu testen, ob sie korrekt funktioniert.