Angeleitetes Programmieren
Aus ProgrammingWiki
Inhaltsverzeichnis |
Wie lernt man Programmieren?
Das Programmierenlernen ist eine sehr schwierige Angelegenheit. Selbst Informatikstudierende haben mitunter erhebliche Probleme beim Erlernen des konstruktiven Umgangs mit einer entsprechenden Programmiersprache.
Die Informatik-Didaktik hat eine Reihe von Konzepten entwickelt, wie man Anfänger in der Programmierausbildung unterstützen kann: Mikrowelten (Hamster, Turtle, Karel the Robot, ...), angepasste Lern- und Entwicklungsumgebungen (BlueJ, Greenfoot) u.v.m. stehen zur Verfügung.
Konstruktionsanleitungen und interaktive Arbeitsblätter
Alle vorgeschlagenen Ansätze stimmen darin überein, dass Programmierkompetenz nur durch aktives Üben erworben werden kann. Programmieren lernt man nur durch Programmieren, heißt der oft zitierte Satz.
Hierfür ist jedoch eine Anleitung notwendig, denn weder unmotiviertes Erlernen konkreter Sprachelemente noch die Lösungsverpflichung konkreter Aufgaben nach der Friss-oder-Stirb-Methode ist zielführend. Deshalb plädieren wir für angeleitetes Programmieren: Dem Lernenden werden bestimmte anfangs meist sehr kurzschrittige Forderungen auferlegt, die er bei der Erarbeitung der Programme beachten muss.
Solche Konstruktionsanleitungen für gute Programme kann man sich als Entwurfsmuster vorstellen. Werden sie nicht nur als Papiernotiz vorgetragen, sondern in das verwendete Programmiersystem eingebaut und als sog. Verträge (contracts) technisch überprüfbar formuliert, können sie den Programmierer schrittweise zu guten Programmen führen. Dies ist insbesondere für Studierende der Informatik, die später komplexe Software ingenieurmäßig entwickeln, sehr wichtig.
Eine sanftere Form angeleiteten Programmierens sind interativer Arbeitsblätter, wie sie im Programming Wiki verwendet werden. Solche Arbeitsblätter sind multimediale Dokumente mit eingebauten ausführ- und editierbaren Programmen in der gewählten Sprachen. Für Programmieranfänger ist gerade diese Mischung aus belehrendem oder anleitendem Text und ausführbarem Code von besonderem Wert, da die entwickelten Ideen unmittelbar exploriert werden können.
Code-Box für Programmbausteine
Auf dem Weg zum guten Programm zeigt das Arbeitsblatt dem Programmieranfänger Zwischenetappen auf, die für das Gesamtergebnis von Bedeutung sind. Die Erfüllung dieser Zwischenziele führt im Allg. zu Programmbausteinen (Module), die sich später im Gesamtprogramm wiederfinden. Es ist naheliegend, dass von derartigen Bausteinen möglichst keine Nebenwirkungen (Seiteneffekte) ausgehen. Vorbild dafür ist die funktionsorientierte Programmierung. Von daher empfiehlt sich eine bevorzugte Verwendung von Funktionen bzw. Prozeduren.
Lehrende können mit Code-Boxen sowohl Programmbausteine zum Experimentieren oder Vervollständigen vorgeben, als auch leere Arbeitsbereiche in den Lehrtext aufnehmen.
Ausführen-Box zur Erprobung des aktuellen Programms
Diese Module separat, d.h. im noch nicht ins Gesamtprogramm fest eingebauten Zustand testen zu können, ist eine wichtige Forderung, die im Sinne des test driven development im Bereich des Software engineering etabliert ist. Für die Testinteraktion stehen im Programming Wiki Ausführen-Bereiche (Boxes) zur Verfügung. Wir verwenden sie wie "Diagnosestecker", um am "Puls der Prozedur" nach einem Fehler zu lauschen.
Zur Beurteilung der Systemreaktion ist es notwendig, volle Klarheit darüber zu besitzen, welches das jeweils gültige Programmstück ist. Wir nennen es das aktuelle Programm. Es ist die Folge der Inhalte aller Code-Abschnitte in Dokumentreichenfolge (von oben nach unten) vom Beginn bis einschließlich des Inhalts der Ausführen-Box. Dies gilt auch für die von der Lehrperson eingefügten Abschnitte mit verstecktem Code (hidden). Die dieser Position im Dokument nachfolgenden Code-Abschnitte bleiben unbeachtet.
Setzt nun der Leser nach zufriedenstellender Erprobung des aktuellen Programms das Studium des Arbeitsblattes fort, erreicht er ggf. weitere "Diagnosestecker", die er einsetzen und inhaltlich individuell anpassen kann. Der Inhalt anderer Ausführen-Bereiche - gleichgültig an welcher Dokumentposition - bleibt unbeachtet.
Check-Box als Feedback für Testfälle
Lehrende üben ihre didaktischen Einfluss aus, indem sie die Arbeitsblätter strukturieren und inhaltlich gestalten. So ist die Positionierung von Code- und Ausführen-Boxes eine wichtige Entscheidung, ebenso die Anleitung für deren Verwendung. Hinzu treten Check-Boxes, die dem Lerner eine Erfolgsrückkopplung geben sollen. Hierfür werden bestimmte Vorgabewerte bereitgestellt und mit den zugehörigen Ergebnissen des vom Programmieranfänger erarbeiteten Programms vergleichen. In der Informatik nennt man soetwas Testfälle.
Nachfolgende Check-Box überprüft die Funktion "fak" die wir weiter oben definiert haben:
Quelltext überprüfen:
Auch für die Check-Boxes ist lediglich das aktuelle Programm (Code-Abschnitte vom Dokumentanfang an, in der Reihenfolge des Aufschriebs bis einschl. Check-Box) relevant.