Typen von Antwort-Auswahl-Fragen (AAF)#

AAF, Antwort-Auswahl-Fragen:

Gemeinsame Eigenschaft aller AAF in weitestem Sinn: im Prinzip automatische Auswertung, z.B. auch durch EvaSys.

Wir überlegen uns hier, wie solche AAF im Prinzip aussehen können.

Welches Ergebnis wird erzeugt?#

Aufgabentyp:

  • gegeben: Code.

  • gesucht: Was kommt ‘raus?

Beispiel#

Gegeben ist folgender Ausdruck:

l = [ x*x for x in range(10) if x % 2 == 1 ]
... # 

Bitte kreuzen Sie an: Welchen Wert hat l?

  • [1, 9]

  • [1, 9, 25]

  • [4, 9]

  • [4, 9, 16]

  • [4, 9, 16, 25]

Diskussion#

  • klar: Offensichtlich kann nur eine einzige Antwort korrekt sein: Single Choice.

  • einfach: Welche Zahlen erzeugt range()?

  • schwieriger: Was bedeuten die Operatoren % und //?

Auswertung Single Choice ist einfach: 1 Punkt für die Frage, top oder flop.

Nicht angekreuzte Antworten ergeben keine Minuspunkte, aber natürlich auch keine Pluspunkte. Auch mehr als 1 angekreuzte Antwort ergibt keine Punkte für die Aufgabe.

Welcher Code erzeugt das vorgegebene Ergebnis?#

Aufgabentyp:

  • gegeben: Ein Ergebnis

  • gesucht: Welcher Code erzeugt dieses Ergebnis?

Beispiel#

Ergebnis = [4, 9]

e = {}
e[1] = [ x*x for x in range(5) if x // 2 == 1 ]
e[2] = [ x*x for x in range(5) if x % 2 == 1 ]
e[3] = [ x*x for x in range(6) if x // 2 == 1 ]
e[4] = [ x*x for x in range(6) if x % 2 == 1 ]

... # 
Ellipsis

Welches e[...] erzeugt das Ergebnis [4, 9]?

  • e[1]: Wahr / Falsch / None

  • e[2]: Wahr / Falsch / None

  • e[3]: Wahr / Falsch / None

  • e[4]: Wahr / Falsch / None

Diskussion#

  • Voraussetzung: Kenntnis der Operatoren % und //.

  • range() ist hier eher ein Distraktor, lenkt von der eigentlichen Frage ab.

  • hier sind mehrere Antworten richtig!

Auswertung Multiple Choice:

  • jede korrekt angekreuzte Auswahl: 1 Punkt

  • jede falsch angekreuzte Auswahl: -1 Punkt

Nicht angekreuzte Antworten ergeben weder Plus- noch Minuspunkte.

Lückentext#

Gegben:

  • ein gewünschtes Ergebnis

  • ein Ausdruck, in dem aber alle Variablen durch _____ verborgen sind.

Gesucht: ein besserer Ausdruck, der das gesuchte Ergebnis liefert.

Beispiel#

Gesucht ist eine Liste aller Quadratzahlen zwischen 0 und 10, also [0, 1, 4, 9].

# syntaktisch korrekt...
qz = [ _____ for _____ in range(100) if _____ < 10 ]

# ... aber liefert offensichtlich nicht das gewünschte Ergebnis:
qz
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

gesuchte Lösung:

qz = [ x*x for x in range(100) if x*x < 10 ]
qz
[0, 1, 4, 9]

Diskussion#

Hier ist die komplette Programmlogik schon vorgegeben. Challenge für Studierende: Verstehe diese Logik so, dass man weiß, welche Variablen da dazugehören. Challenge für die Klausurkorrektur: Komplett richtige Lösungen sieht man gerne, volle Punktzahl – aber wie bewertet man “fast richtige” Lösungen?