Programmierprüfung meets «Wer wird Millionär?» – auf der Suche nach praxisnahen Prüfungsformen
Ein Gastbeitrag von Michael Faes, Dozierender im Studiengang Informatik, Hochschule für Informatik
Wie prüft man Programmierfähigkeiten praxisnah? Wenn man im Job beim Programmieren feststeckt, fragt man Kolleginnen und Kollegen, ChatGPT oder Google. Wieso nicht auch in einer Prüfung? Ein Experiment mit dem Codenamen «Telefon-Joker» liefert neue Erkenntnisse – und wirft neue Fragen auf.
Auf der Suche nach neuen Prüfungsformen bin ich immer wieder abseits der Wege gegangen. Im HS 2021 führte ich als erster Dozent der Module «Objektorientierte Programmierung 1/2» (OOP1/2) eine Modulschlussprüfung am Computer durch und im FS 2023 entwickelte ich zusammen mit Simon Kaspar von der zentralen IT eine Vorlage für abgesicherte Java-Prüfungen mit dem CAMPLA-System. Diese wird seit einem Jahr von allen OOP-Dozierenden im Studiengang Informatik eingesetzt und erlaubt es den Studierenden, während der Prüfung ihre gewohnte Entwicklungsumgebung zu verwenden und auf beliebige digitale Unterlagen zuzugreifen, die sie vorher hochgeladen haben.
Aber am Ziel bin ich noch nicht, aus zwei Gründen: Erstens halte ich es für praxisfern, in kurzer Zeit und in absoluter Isolation Programmieraufgaben zu lösen. Mit anderen Personen (oder KI-Assistenten) über Code zu sprechen, präzise Fragen zu formulieren und etwas mit den Antworten anfangen zu können – auch das sind wichtige Kompetenzen. Und zweitens gibt es immer wieder Studierende, die bei Prüfungen massiv schlechter abschneiden, als ich es aufgrund ihrer Programmierkompetenzen erwarten würde. In Gesprächen mit Betroffenen treten zum Teil Gründe hervor, die auch mit der Prüfungsform zusammenhängen: Stress, Blackout, Scheitern an Details («Ich wusste nicht mehr, wie man etwas in eine Map einfügt.»).
Deshalb führte ich dieses Semester in OOP2 ein Experiment mit einem neuen Prüfungselement durch: Die Studierenden durften jederzeit nach draussen gehen und bei drei Personen vor dem Prüfungsraum Fragen stellen – angelehnt an den Telefon-Joker in «Wer wird Millionär?». Bei den drei Personen handelte es sich um einen anderen OOP2-Dozenten und um zwei Tutoren. Die Studierenden durften beliebige – und beliebig viele! – Fragen stellen, solange diese in sich geschlossen waren, d. h. keine Kenntnis der Aufgabenstellung voraussetzten.
Die Idee hinter diesem Design war, dass die Studierenden trotz aller Hilfe selbst programmieren mussten; die Fragen und Antworten waren rein mündlich, die Studierenden durften also keinen Code zeigen und erhielten auch keinen Code als Antwort. Zudem mussten sie das Problem soweit verstanden haben, dass sie eine von der Aufgabenstellung lösgelöste Frage formulieren konnten. Also nicht: «Kann ich einen Tipp für Aufgabe 2 haben?», sondern zum Beispiel: «Wie sortiere ich eine Liste mit Elementen von einer eigenen Klasse ‹Animal›?»
Die Prüfung fand Mitte November statt und brachte eine grosse Überraschung: Der Telefon-Joker wurde kaum verwendet! Wir hatten uns mit verschiedensten Massnahmen auf einen Ansturm vorbereitet, und dann das: Während mehr als zwei Stunden gab es gerade mal 12 «Anrufe». Über zwei Drittel der Studierenden nutzten das Angebot gar nicht, und nur zwei Personen machen mehr als einmal vom Joker Gebrauch.
Gemeinsam mit Monika Schlatter vom Didaktikzentrum hatte ich vor der Prüfung eine Umfrage vorbereitet, um von den Studierenden Feedback einzuholen. Nach der Prüfung fügte ich kurzerhand noch eine weitere Frage hinzu: «Aus welchen Gründen haben Sie den Telefon-Joker nicht genutzt?» Wir waren zuvor gar nicht auf die Idee gekommen, dass das passieren könnte.
Der Telefon-Joker kam trotzdem gut an. 24 von den 36 Studierenden, welche die Prüfung absolviert hatten, nahmen sich Zeit für die Umfrage und sprachen sich hauptsächlich positiv aus. Für fast 80 % der Personen machte der Telefon-Joker die Prüfungssituation «deutlich weniger stressig», «etwas weniger stressig» oder zumindest nicht stressiger:

Die Prüfung wurde auch grösstenteils als praxisnäher empfunden, allerdings nicht in dem erhofften Ausmass:

Die Personen, welche den Joker genutzt hatten, waren überwiegend zufrieden mit der Hilfe, die sie bekommen hatten. An dieser Stelle nochmals herzlichen Dank an die Joker-Personen!

Das vielleicht interessanteste Feedback resultierte allerdings aus jener Frage, die ich last-minute hinzugefügt hatte. Fast die Hälfte der betroffenen Studierenden gaben an, dass sie den Joker nicht genutzt hatten, weil sie ihre «Probleme nicht als in sich geschlossene Frage formulieren» konnten:

Das Bild wird durch einige aufschlussreiche Kommentare ergänzt:
«Ich fand es […] nicht einfach, eine Frage zu formulieren, ohne meinen Code zeigen zu können. Daher vertiefte ich mich weiter in die Aufgabe mit dem Ziel, eine gute Frage stellen zu können. Dabei gelang es mir dann manchmal, die Aufgabe doch noch selbst zu lösen.»
«In der Praxis und beim Lernen sind meine Fragen immer von meinem Code begleitet, um das Problem zu veranschaulichen. […] Ich denke, ich hätte vor der Prüfung üben müssen, ohne Code und ohne Notizen über meinen Stand und mein Problem zu sprechen.»
«Es ist viel zu mühsam, sich eine konkrete Frage zu überlegen; mit ChatGPT fragt man ja auch einfach mal drauf los und schaut, wie man weiter kommt, und fragt noch einmal.»
Daraus ergibt sich ein Strauss von Fragen: Was hat den Studierenden gefehlt, damit sie bessere Fragen hätten stellen können – auch ohne Code zu zeigen? Fehlen ihnen vielleicht Konzepte und präzise Begriffe? Sollten wir mit den Studierenden üben, über Code zu sprechen und gute Fragen zu stellen? Oder braucht es für eine praxisnahe Prüfung tatsächlich eine andere Art von Unterstützung, z. B. einen Zugang zu einem KI-Chatbot?
Der letzte Kommentar wirft aber auch die Frage auf: Unterstützen oder hemmen ChatGPT & Co. uns dabei zu lernen, gute Fragen zu stellen? Wenn man auf StackOverflow (in der Informatik in gewisser Hinsicht ein Vorläufer von ChatGPT) eine Frage stellt, die nicht sinnvoll beantwortet werden kann, bekommt man kritische Kommentare und Downvotes. Auch wird bei Bedarf die Gegenfrage gestellt: «Was hast du schon versucht?» Bei ChatGPT hingegen bekommt man auch auf die «dümmsten» Fragen immerfreundliche Antworten – mit welchen Folgen?
The Road goes ever on – gemeinsam mit einem anderen OOP2-Dozenten habe ich bereits den Plan gefasst, den Telefon-Joker nächstes Semester weiterzuentwickeln. Sehr gerne tausche ich mich auch mit anderen Gefährten über Ideen und Erfahrungen aus.
Ein spannender Ansatz, der Prüfungen praxisnäher und realistischer gestaltet. Besonders die Förderung der Kommunikationsfähigkeiten ist ein wichtiger Aspekt, da Programmierer in der Praxis oft nicht isoliert arbeiten, sondern Lösungen im Team erarbeiten oder gezielt nach Unterstützung suchen müssen. ;)
Könnte dieses Konzept weiterentwickelt werden, indem Studierende nicht nur Fragen stellen, sondern auch in Peer-Gruppen gemeinsam Lösungsansätze diskutieren? Oder wäre ein Format denkbar, das die Nutzung von Dokumentationen und Open-Source-Ressourcen wie in der realen Arbeitswelt erlaubt? Welche Herausforderungen ergeben sich dabei für eine faire Bewertung?
Spannende Ansätze - gerne verweise ich auf den Anlass dazu: https://fhnw365.sharepoint.com/sites/inside-HT-Ma/_layouts/15/Event.aspx?ListGuid=d2b92b35-67c8-485d-8b09-cacdacad22ae&ItemId=67
Vielen Dank für die Anregungen. In unseren Programmierprüfungen können die Studierenden bereits auf die Java-Dokumentation und auf beliebige weitere Unterlagen zugreifen – die sie aber vor der Prüfung hochladen müssen. Ich fände es auch interessant, die Prüfung weiter zu öffnen und z. B. bestimmte Seiten wie StackOverflow zuzulassen. Oder auch einen (evtl. beschränkten) Zugang zu einem LLM.
Einen Peer-Gruppen-Ansatz fände ich ebenfalls spannend, aber da stellen sich bei mir auch sofort Fragen zur Fairness.