Ideenskizze zu einem Fortbildungs-(Lehrer) und Ausbildungs- Konzept zum spielerischen Erlernen der Programmiersprache JAVA Zielgruppe: Primäre Zielgruppe sind Kinder und Jugendliche, die einen spielerischen und spannenden Einstieg in die Welt der Programmierung erhalten sollen Voraussetzungen: Für alle oben genannten Zielgruppen werden keinerlei Erfahrungen in Programmierung vorausgesetzt. Die Teilnehmer sollen ohne die komplexen Anforderungen einer professionellen Entwicklungsplattform die grundlegenden Konzepte von Programmierung kennen lernen. Professionelle Programmierumgebungen eignen sich im Unterricht nur schlecht für die ersten Schritte, das die Bedienung der Entwicklungsumgebung und nicht die Lösung von programmierbaren Problemen im Vordergrund steht. Neben der Vielfalt von Programmteilen vie Programmeditor, Compiler Debugger und Bibliotheken hat der lernende auch noch die hohen Hürden der Programmiersyntax zu überwinden. Dabei zeigt sich in der Praxis , dass die modernen Programmiersprachen alles andere als intuitiv oder verständlich sind. Auch die Methoden der objektorientierten Programmierung erschlagen die meisten Lerner zunächst einmal mit den sehr aufwendigen Beschreibungen und Analysen der „Grossen Welt“ welche auch nicht zum Erfahrungshorizont von Schülern gehört. • • • • • • • • Aus den obigen Argumenten ergeben sich einige einfache Forderungen an Programmierausbildungen: Verwenden einer Programmiersprache mit kleinem, rasch überblickbarem und anwendbarem Sprachumfang. Visuelle Darstellung des Programmablaufs Konkrete anschauliche Problemstellungen Einfachste Entwicklungsumgebung Geringe Turn around Zeiten Nahtloser Übergang zu komplexeren Anforderngen Nahtloser Übergang zu realen Programmiersystemen In der Vergangenheit gab es schon einige Versuche diesen Anforderungen gerecht zu werden. Meisten wurde im Zuge dieser Bemühungen eine eigen neue Programmiersprache und Umgebung geschaffen. ( LOGO, Karel the Robot) Die meisten dieser Miniumgebungen konnten nur einen teil der obigen Forderungen erfüllen. Spätestens beim letzten Schritt zu den praxisbewährten Programmiersystemen versagten die meisten Lösungen. Zur Lösung dieses Problems wurde ein System zur Programmierung entwickelt welches sich in hervorragendem Masse für die Ausbildung eignet. Eine der Kernannahmen sind: • Die Benutzung eines endlichen Automaten ist in der Komplexität deutlich geringer als die einer Programmiersprache. Die ermöglicht gerade dem Programmieranfänger einen leiten Einstig. Johannes Georg Grosskamp • Komplexe Sprachkonzepte, wie die Trennung von Programm- und Datenspeicher für Variablen sowie prozedurale Konzepte u.v.m. werden nicht benötigt. • Das Modell eines endlichen Automaten gehört zu unserer täglichen Lebenserfahrung und wird daher sehr leicht verstanden uns akzeptiert. Die grafische Entwicklungssumgebung Das Kind dieser Bemühungen heißt Kara (entstammt der eth Zürick) und wird ausführlich im „Informatik Spekrum“ Organ der Gesellschaft für Informatik e.V. Band 23 Heft 5 im Oktober 2000 vorgestellt. (Seite 309-315) Informationen zu Kara und kostenfrei Ressourcen werden im Internet zur Verfügung stellt. Kara ist ein Marienkäfer, der in einer einfachen grafischen Welt auf dem Bildschirm lebt. Er kann programmiert werden, um in seiner Welt Aufgaben zu erledigen, zum Beispiel Kleeblätter zu sammeln. Kara wird in einer grafischen "Entwicklungsumgebung" programmiert. Kara’s Programme werden rein grafisch mit der Maus als endliche Automaten "zusammengeklickt". Keine Syntax der verwendeten Sprache muss erlernt werden, Syntaxfehler gibt es nicht! Jedes erstellte Programm kann sofort gestartet werden. Die Schüler/innen können sich von Anfang an auf ihre Hauptaufgabe konzentrieren: Korrekte Programme zu schreiben, die genau das tun, was von ihnen verlangt wird. Und darum sollte es beim Programmieren eigentlich gehen! Die Lebenswelt Der Editor Ein Beispielprogramm zeigt die recht einfache Struktur der Aufgaben: Johannes Georg Grosskamp Aufgabe – Kara, der Blätterfetischist Schreiben Sie ein Programm, das Kara bis zum nächsten Baum führt. Liegt auf einem Feld ein Blatt, soll Kara es aufnehmen; liegt auf einem Feld kein Blatt, eines hinlegen. Bei dem Baum angekommen ist das Programm zu beenden. Für den Einsatz im Unterricht stehen jetzt schon verschienste Unterstützungen zur Verfügung. : • Ein Leitfaden, der sich an Lehrer/innen richtet . Er zeigt die Lernziele auf, die ein Einsatz von Kara verfolgt, und gibt eine kurze Einführung in die Programmierung von Kara. Dazu werden endliche Automaten anhand eines Geldautomaten kurz erklärt. • Folien für Lehrer/in-Vorträge. Kommentiert sind diese Folien im oben genannten Überblick . Die Vorträge decken einiges an Stoff ab: ein Vortrag, der als Einführung gedacht ist, einer zum Thema strukturiertes Vorgehen beim Programmieren sowie ein Vortrag zu den Grenzen von Kara's Fähigkeiten. • Aufgabenblätter für die Schüler/innen. Zu jeder Aufgabe gibt es eine Musterlösung für die Lehrer/innen. Diese Lösungen verraten auch, was der eigentliche Kern der Aufgabe ist. Es hat Aufgaben unterschiedlichen Schwierigkeitsgrades; jede Aufgabe ist mit ihrem Schwierigkeitsgrad versehen. • Es hat Welten für die Aufgaben, die zum Testen der Programme der Schüler/innen gedacht sind. Für die Lehrer/innen hat es zusätzlich die Programme der Musterlösungen, damit diese einfach ausprobiert werden können. Die nächste Entwicklungsstufe auf dem Lernweg ist Lego-Kara. LegoKara ist ein Roboter, der auf dem Lego Mindstorms Set basiert. LegoKara wird in der Umgebung von Kara programmiert. LegoKara ermöglicht es Schülerinnen und Schülern, ihre Karaprogramm an einem physischen Roboter zu testen. Aus der virtuellen Bewegung von Kara am Bildschirm wird eine Bewegung des LegoKara durch das Schulzimmer. So ist das Programmieren weniger abstrakt - und es macht noch mehr Spass! Johannes Georg Grosskamp Der Vorgang des Programmierens wird wesentlich konkreter und anschaulicher als Lösung eines real existierenden Problems. Ausserdem tauchen in dieser realen Welt Probleme auf, die in der idealisierten, diskreten Welt von Kara keine Rolle spielen. ( z. B. Die Ungenauigkeit eines Wendemanövers durch Reibungsverluste der Legoketten am Boden) Das Ziel: Programmieren mit dem JAVA SDK In bisherigen Ansätzen mussten die Schüler und Schülerinnen beim Übergang zu einer Programmiersprache nicht nur Abschied von ihren grafischen Miniwelten nehmen, sondern auch die geübten Programmierelemente aufgeben. Um den Übergang wesentlich sanfter und nachvollziehbarer zu gestalten wird „JAVAKARA“ eingesetzt. Während Kara mit der Welt des Marienkäfers vertraut machte und eine grafische Programmierung einführte, kann mit JavaKara der gleiche Marienkäfer in der vertrauten Umgebung programmiert werden. Die Programmiersprache ist aber JAVA. Die Schüler und Schülerinnen können sich anfangs darauf konzentrieren den Programmeditor und Compiler JAVAC zu bedienen indem sie einfache Aufgaben aus der schon geleisteten KARA Programmierung übertragen. Sind die ersten Hürden mit der Entwicklungsumgebung genommen können komplexere Aufgaben erarbeitet werden und die verschiedensten Sprachelement von Java eingeführt werden. Um dabei am Anfang die Komplexität der objektorientierten Eigenschaften von Java auszublenden und die Konzentration auf die in jeder Programmiersprache verwendeten Datenund Kontrollstrukturen zu lenken können in dieser Phase vorgefertigte Programmierschablonen eingesetzt werden. Die Programmierschnittstelle JAVAKARA stellt eine Klasse zur Verfügung die den zugriff auf die Objekte KARA und dessen Welt ermöglicht. Die implementierten Methoden entsprechen denen der grafischen Welt von KARA. Sind die Beispiele und Übungen von KARA übertragen, sollten sich die Schüler und Schülerinnen in die Lage versetzt sehen mit Hilfe von allgemeiner Ausbildungsliteratur die noch fehlenden Schritte zum perfekten JAVA zu erarbeiten. Das oben vorgestellte System eignet sich unserer Meinung nach in besonderes guter Weise zur Aus- und Weiterbildung von Lehrern. Fachfremde Lehrer können in sehr praktischer Orientierung die Grundlagen der Programmierung erarbeiten. Die Erarbeitung auf sehr spielerische Art ermöglicht die Einführung telekooperativer Arbeitselemente in die Ausbildung. Der geringe Sprachumfang und die einfache Programmierwelt ermöglichen eine sehr kurze Einführung in die Programmierung in einem Präsenztraining. Anhand der zukünftigen Unterrichtsmaterialien kann der Stoff selbst erlebt werde. Gleichzeitig kann schon in dieser Phase die Zusammenarbeit und Weiterbildung mit Internetunterstützung eingeführt werden. Dabei geht es nicht um das Abarbeiten komplexer Online Trainings via Internet. Eine einfache Telekooperationsplattform wie z.B. BSCW (Basic Support for Cooperative Working) stellt für diese Lernstoff ein gut Lernunterstützung dar. Ein Trainer der KARA in einem Präsenztraining eingeführt hat, kann die Gruppenteilnehmer im Stoff sehr gut weiterführen. Die Aufgabenstellungen in KARA sind sehr einfach formuliert und können ohne tiefgreifende Erklrungen verstanden werden. Die Lösung der Aufgaben ist die Aufgabe der Einzelnen oder von Kleingruppen, für die eine Präsenz im Klassenraum nicht erforderlich ist. Die Lösungen können hervorragen in Heimarbeit bearbeitet werden, mit Kollegen diskutiert und mit dem Trainer ausgetauscht werden. Hierbei kann der Trainer neben einer individuellen Betreuung Johannes Georg Grosskamp Einzelner auch neue Kooperationsformen der Lerner einüben. Mit der fortschreitenden Sammlungen von Aufgabenlösungen kann eine solche Lerngruppe die ersten Bausteine von Unterrichtsmaterialien zusammentragen, die mit den zukünftigen Schülern bearbeitet werden können. Zusätzlich zu vorgefertigten Aufgaben können die Gruppen an das Erstelen von eigenen Aufgaben herangeführt werden. Ziel ist die Schaffung einer kleinen Arbeitsgemeinschaft, die sich während ihrer eigenen Programmierausbildung gleichzeitig einen ständig wachsenden Aufgaben und Materialienpool erstellt. Nutzen viele parallele Ausbildungsgruppen ein solches Konzept ist sicherlich Sinnvoll nach einiger Zeit die Sammlungen verschiedener Gruppen zu Bibliotheken zusammenzufassen. Eine gewisse Leistungskontrolle entsteht bei zu Einführung von LEGOKARA. Dieser Teil ist wegen seiner Hardwareanforderungen nicht mehr in einem Fernlern Szenario zu leisten. Die Übertragung der KARA Programme in reale Aufgabenlösungen eines Roboters bietet noch einmal die Möglichkeit seinen Leistungsstand zu überprüfen und zu entscheiden ob der Schritt in die JAVA Welt angegangen werden kann. Die in der ersten Phase eingeführten Arbeitsformen der Telekooperation können ohne Änderungen auch in der JAVA Ausbildung eingesetzt werden. In einer Präsenzphase werden die technischen Probleme der Installation und Inbetriebnahme des JDK angegangen. BSCW bietet mit seinen Kommunikationsmöglichkeiten, gerade nach diesem Trainingsabschnitt, eine gute Unterstützungsplattform für Trainer und Teilnehmer, denn erfahrungsgemäss tauchen die meisten Problemen mit JAVA schon in der Installationsphase auf. Hier können Teilnehmer sich gegenseitig supporten und notfalls den Trainer einbinden. Für die Erarbeitung der Programmiersprache JAVA mit Hilfe von KARAJAVA gelten die oben genannten Abläufe und Ideen. Nach dem Ende dieser Einführungseinheit sind die Teilnehmer in der Lage durch Eigenstudium, CBT , WBT oder einen klassischen Programmierkurs ihre Kenntnisse in JAVA zu vertiefen. Unserer Erfahrung nach wird aber die intensive Nutzung des Internets als Kooperationsplattform dazu führen, dass die Teilnehmer die Netzressourcen NEWs Groups, News Letter, JAVA Site´s etc. viel stärker nutzen lernen, und anhand von komplexer werdenden Aufgabenstellungen in das Thema eindringen werden. Da fast alle Programmieraufgaben sehr viel Zeit in Anspruch nehmen, auch wenn sie sehr einfach sind, kann die natürliche Begrenzung der Arbeitszeit von Schülern durch die Unterrichtsstunden dahingehend entgegengewirkt werden, dass auch im späteren Unterricht internetgestützte Kooperationsformen eingeübt werden. Diese Schlüsselqualifikationen werden als positiver Seiteneffekt gleich mit vermittelt. Johannes Georg Grosskamp Ablaufskizze JAVA programmieren lernen in einem medienintergrieten Training Telekooperationstechniken Einführung eingesetzte Werkzeuge KARA KARA Einführung Entwicklungsumgebung Aufgaben lösen mit KARA BSCW als Kooperationsplattform im Unterricht mit KARA BSCW Dateien und Verzeichnisse gemeinsam nutzen 1-3 Tage Präsenztraining Themenblock e-Mail Funktionen Einrichten der Entwicklungsumgenung auf dem heimischen Rechnern Diskussionsgruppen Internet Recherchen BSCW Dokumentenmanagement Versionskontrolle Johannes Georg Grosskamp 2-6 Wochen tutoriell gestütztes Selbstlernen KARA Augaben Erarbeiten von Daten und Programmstrukturen in KARA LEGOKARA Einführung in die Robotik mit KARA LEGOKARA Entwicklungsumgebung 1-3 Tage Präsenztraining Lego Mind Storms Not Quite C NQC Tool Teamorganisation JAVA SDK 1.3 synchrone Kommunikation Javakara Entwicklungsklassen shared Whiteboard Aufbau einer Beispiel und Aufgabenbibliothek Applikation sharing BSCW Unterstützung bei Programmier- und Einführungsproble men Johannes Georg Grosskamp Daten veröffentlichen Start einer dauerhaft arbeitenden Arbeitsgruppe Umsetzen der Übungen aus Kara in Javakara. Erweiterung der Übungen und des Wissen. Javakara Entwicklungsklassen 2-6 Wochen JAVA SDK 1.3 Einführung von JAVAKARA Einführung der Klassen, Methoden und Schablonen 1-3 Tage Präsenztraining optionale Selbstlernphase Quellenachweis JAVAKARA: Der Urvater von Kara ist "Karel, the Robot" (siehe [1],[2]). Die Idee wurde vielfach aufgenommen ([3],[4],[5],[6],[7]) und im Unterricht eingesetzt. Die neue Idee zu Kara wurde erstmals in [8] beschrieben. [1] Pattis, Richard E. Karel the Robot: A Gentle Introduction to the Art of Programming. John Wiley & Sons, 1981. [2] Karel the Robot Homepage. http://www.mtsu.edu/~untch/karel/index.html [3] Blaha, Georg; Köck, Martin; Lingl, Gregor; Mayer-Maly, Rita; Winterstein, Kurt. Werkzeug Computer. Verlagsbuchhandlung Pichler, Wien 1986. [4] Hermes, Alfred; Stobbe, Dieter. Informatik Eins. Ernst Klett Verlag, Stuttgart 1988. [5] Hermes, Alfred; Sennholz, Klaus. Informatik betrifft uns. Ausgaben 3/92 und 3/94. Bergmöser + Höller Verlag, Aachen. [6] Hartmann, Werner; Reichert, Raimond. Grundkurs "Einsatz von Informatikmitteln" an einem Gymnasium. http://educeth.ethz.ch/informatik/grundkurs/ [7] Bergin, Joseph; Stehlik, Mark; Roberts, Jim; Pattis, Richard. Karel++: A Gentle Introduction to the Art of Object-Oriented Programming. John Wiley & Sons, 1997. http://csis.pace.edu/~bergin/karel.html [8] Nievergelt, Jürg. Roboter programmieren – ein Kinderspiel. Bewegt sich auch etwas in der Allgemeinbildung? Informatik Spektrum, wird 1999 erscheinen. Verlag Springer. [9] Boles, Dietrich. Der Java-Hamster. http://www-is.informatik.unioldenburg.de/~dibo/hamster/ Johannes Georg Grosskamp