# Programmieren leicht gemacht - adäquate Modelle für den Einsatz im Unterricht

Dieses Buch steht im Regal Programmierung.

## Zusammenfassung des Projekts

„Programmieren leicht gemacht - adäquate Modelle für den Einsatz im Unterricht“ ist nach Einschätzung seiner Autoren zu 100 % fertig
* Zielgruppe: Interessierte Lehrende im Bereich Informatik, die bereits Erfahrung im Umgang mit elementaren programmiertechnischen Elementen aufweisen
* Lernziele: Der Leser soll einen Überblick über einige ansprechende Programmierumgebungen erhalten, die in erster Linie für den Einsatz zu Lern- und Lehrzwecken entwickelt wurden. Weiter soll er mit den unterschiedlichen vorgestellten Programmen, Umgebungen und Programmiersprachen soweit vertraut sein, dass er diese gewinnbringend in den eigenen Unterricht einbauen kann!
* Buchpatenschaft / Ansprechperson: Zur Zeit niemand. Buch darf übernommen werden.
* Richtlinien für Co-Autoren: Dieses Buch ist ein Wiki! Je nach Lust und Laune kann jeder dieses Buch verbessern, Rechtschreibfehler ausbessern, inhaltliche Korrekturen vornehmen und es natürlich erweitern.
* Projektumfang und Abgrenzung zu anderen Wikibooks: Dieses Buch stellt einige grundlegende didaktisch sinnvolle Umgebungen für die erste Kontaktaufnahme mit dem Programmieren dar, ohne einen Anspruch auf eine vollständige Auflistung aller momentan aktuell verfügbaren Programmierumgebungen für Schüler/innen zu erheben. Die Vor- und Nachteile in Hinblick auf unterschiedliche Einsatzmöglichkeiten bzw. Zielgruppen werden im Rahmen dieses Buches ebenfalls erläutert.
* Themenbeschreibung: Um die erste Kontaktaufnahme mit diesen teilweise sehr umfangreichen Umgebungen zu erleichtern, wird die Einführung in die entsprechende Benutzeroberfläche durch aussagekräftige Beispiele und Aufgaben ergänzt.
* Aufbau des Buches:

# Einleitung

»The eyes of the schoolchildren glisten with anticipation. Their fingers arch lightly over their computer terminals, waiting to tap out solutions to ever more difficult problems appearing on the screens before them. Any schoolteacher would be thrilled by such concentration and receptiveness. But these children are not in school; they’re playing games in a video arcade.«
Dieses Zitat adressiert schon in direkter Weise die problembelastete Ausgangssituation im Informatikunterricht. Nach Analyse der bestehenden Situation an unseren Schulen stellt sich unweigerlich die Frage, ob das Programmieren im Informatikunterricht überhaupt noch Raum findet bzw. welche Umgebungen hierbei zum Einsatz kommen sollen, um einen schülerzentrierten, aktiv entdeckenden Unterricht zu forcieren.
Ähnlich wie die Kenntnis der elementaren Rechenoperationen die Primärerfahrung im Mathematikunterricht darstellt, sollte das Programmieren die Rolle der Primärerfahrung im Informatikunterricht einnehmen. Dabei sollte der Unterricht nicht auf die bloße Vermittlung von Programmiersprachen ausgerichtet sein - Syntax- und Semantikprobleme sollten auf ein Minimum reduziert werden, sodass in erster Linie auf die Vermittlung von allgemein gültigen Schlüsselkompetenzen Wert gelegt wird. Die Einführung des Programmierens spielt ohne Zweifel eine Schlüsselrolle für das Verständnis informatischer Grundbegriffe, sodass bei der Vorstellung der folgenden Programmierumgebungen nicht das "ob" sondern vor allem das "wie" im Vordergrund stehen sollte.
Bei einigen der folgenden Programme wird dazu eine Art Pseudosprache verwendet, deren Konstrukte die verschiedenen wichtigen Konzepte gut darstellen kann und die vor allem Schritt für Schritt ohne weiteren Aufwand zu erlernen ist. Auf diese Weise wird verhindert, dass für Schüler/innen Programmieren mit Codieren gleichgesetzt wird, ohne eine Schwerpunktsetzung auf die Problemorientierung vornehmen zu können.

## Was kann (und soll) Lernsoftware im Programmierunterricht leisten ?
### Die "Dreifachbelastung" der SchülerInnen im Programmierunterricht

Eines der Hauptprobleme für Programmieranfänger besteht darin, dass sie beim Erlernen einer Programmiersprache zugleich mit drei gänzlich neuen Inhalten bzw. Konzepten konfrontiert und damit oft überfordert werden:
* Die Bedienung der Entwicklungsumgebung (IDE): IDEs werden nicht für Programmieranfänger entwickelt, sondern für Profis. Dementsprechend bieten sie eine Fülle von Möglichkeiten (Menüpunkte, Toolbars etc.), deren Sinn ein Programmieranfänger gar nicht durchschauen kann. Dadurch wird ein "intuitives" Zurechtfinden unmöglich und gewisse Schritte (zum Beispiel das Anlegen eines Projekts oder das Compilieren) oder Einstellungen müssen einfach auswendig gelernt werden.
* Die Grundstrukturen einer Programmiersprache: Bereits beim Zusammenspiel zwischen Variablen und Schleifen zeigen sich die Probleme vieler SchülerInnen im Umgang mit Steuerstrukturen. (Einfaches Beispiel: Wie bestimmt man das Maximum aus fünf eingegebenen Zahlen ?) Ein grundsätzliches Dilemma des Unterrichts besteht nun darin, dass häufig eine große Lücke zwischen dem passiven Beherrschen (also dem Nachvollziehen eines von der Lehrperson erstellten Programms) und dem aktiven Beherrschen (also dem selbständigen Erkennen, wann und wie die jeweilige Steuerstruktur zur Problemlösung einzusetzen ist) klafft und dass diese Lücke nur sehr schwer durch Erklärungen durch die Lehrperson zu überbrücken ist.
* Der dritte der für einen Programmieranfänger neu zu erlernenden Inhalte ist schließlich die Syntax der konkret behandelten Programmiersprache.
Wird im Programmierunterricht nun von Anfang an mit einer "richtigen" Programmiersprache (wie JAVA, C++, Pascal, ...) gearbeitet, ist es de facto unmöglich, diese drei Inhalte zeitlich getrennt zu vermitteln. Gerade beim Einstieg ins Programmieren kann eine entsprechende Lernsoftware helfen, einen Schritt nach dem anderen anzugehen:
* Die meisten der im folgenden besprochenen Programme bieten eine speziell konzipierte, sehr intuitive "Entwicklungsumgebung" an, deren Beherrschen keinen zusätzlichen Lernaufwand bedeutet.
* Alle besprochenen Programme verwenden Bewegung, um den Programmablauf und die Funktionsweise von Steuerstrukturen zu veranschaulichen. Und mit der 4maligen Wiederholung einer Bewegung ist eben für die meisten SchülerInnen die Arbeitsweise einer Schleife besser veranschaulicht als mit der 4maligen Manipulation einer Variablen.
* Oft ist sogar das Erlernen einer Syntax hinfällig. So werden zum Beispiel bei Scratch die einzelnen Befehle einfach mit der Maus als Blöcke an die entsprechende Stelle im Programm gezogen.
Dadurch wird es möglich, sich zu einem bestimmten Zeitpunkt auf einen der drei oben aufgezählten Lerninhalte zu konzentrieren, was ein erheblich besseres Verständnis und damit eine effizientere Wissensvermittlung bewirkt. Eine ausführlichere Behandlung dieses Themas findet sich unter
http://www.ceebot.org/index.php?option=com_content&task=view&id=15&Itemid=36

### Motivation

Der Einsatz von Lernsoftware bewirkt, dass SchülerInnen bereits sehr früh selbständig etwas komplexere Aufgabenstellungen lösen können, ohne zuvor gewisse Grundlagen (Bedienung der IDE, Syntax) "büffeln" zu müssen. Dies erlaubt das frühe Erkennen des kreativen Potentials, das im Programmieren steckt, und wirkt dadurch motivierend. Eine entsprechend "witzige" graphische Aufbereitung der Lernsoftware (Hamster, Roboter, Tänzerin etc.) und abwechslungsreiche Aufgabenstellungen können dazu beitragen, die Motivation bei einem Großteil der SchülerInnen (und nicht nur bei einzelnen wenigen) auch über einen längeren Zeitraum auf einem vernünftigen Niveau zu halten.

### Gefahren beim Einsatz von Lernsoftware, oder: Ist das alles "nur eine Spielerei" ?

Die Kehrseite des erhöhten Motivationslevels besteht darin, dass gerade zu Beginn der Arbeit mit entsprechender Lernsoftware der Eifer der SchülerInnen beim Lösen der jeweiligen Aufgaben so groß ist, dass dabei der eigentliche Lerninhalt auf der Strecke bleibt. Im Vordergrund steht dann, dem Hamster/Roboter etc. nur "irgendwie" beizubringen, was er machen soll, dass eine systematische Arbeitsweise gegenüber "Trial and Error" in den Hintergrund tritt. Wozu brauchts dann Schleifen, wenn man einfach denselben Programmcode eh einfach mit der Zwischenablage nach unten kopieren kann ? Dass dies nicht gerade dabei dienlich ist, allgemeine Prinzipien für den Einsatz von Schleifen zu erkennen und dauerhaft zu festigen, ist klar.
Typischerweise werden bei einer derartigen Arbeitsweise die ersten Übungen sehr schnell und ohne den erwünschten Lerneffekt absolviert, was dann dazu führt, dass die SchülerInnen an etwas schwierigeren Aufgaben (die zum Beispiel eine verschachtelte Schleife erfordern) scheitern. Besonders frustrierend wirkt dann für sie, dass für sie der Grund dafür nicht erkennbar ist - haben sie doch "eh alle Aufgaben der Reihe nach gemacht".
Derartige Erfahrungen führen bei erfahrenen Unterrichtenden sehr schnell dazu, den Einsatz als Lernsoftware damit abzutun, dass das alles nur Spielerei ohne richtigen Lerneffekt sei. Dabei ist es nur so, dass besonders beim Einsatz von Lernsoftware die Lehrperson von Anfang an gefordert ist, das Geübte zu systematisieren und zu verallgemeinern, für ordnungsgemäße Lernunterlagen zu sorgen und den Lernerfolg durch systematische Leistungskontrollen zu sichern. Leider verleitet der Einsatz von Lernsoftware die Lehrperson zu einem gewissen "Laissez-faire"-Stil, weil die SchülerInnen - oft auch mit viel Begeisterung - sehr selbständig und engagiert arbeiten, nur eben leider häufig unsystematisch.
Das zu den Übungen gehörende Begleitmaterial wie Arbeitsblätter mit Lösungshinweisen, Verständnis- und Kontrollfragen können für die Lehrperson bei der Systematisierung und Festigung der in den Übungen gewonnenen Erkenntnisse als Unterstützung dienen. Darüber hinaus wird den SchülerInnen das Arbeiten in ihrem individuellen Lerntempo bei weitgehender Selbstkontrolle ermöglicht.

# Alice: Erstellung von 3D-Animationen

Alice liegt eine objektorientierte Programmiersprache zugrunde, die vordergründig zu Ausbildungszwecken entwickelt wurde. Bei diesem Programm wurde der Fokus vor allem auf eine intuitive Handhabung und einfache Gestaltung mittels Drag-and-Drop-Oberfläche gelegt, sodass es AnfängerInnen möglich ist, Computeranimationen aus vorgegebenen 3D-Modellen zu erstellen. Diese können mit einigen Vorkenntnissen zu recht komplexen Programmen erweitert werden. Dabei wird die konstruierte 3D-Welt aus einer Kameraperspektive wahrgenommen, die darin enthaltenen Objekte können ganz einfach mit Hilfe der Maus manipuliert werden. Etwaige Barrieren im Umgang mit Programmiersprachen werden darin auf ein Minimum reduziert, da sich die SchülerInnen an keine komplizierten Syntax-Regeln halten müssen, sondern einzelne Befehle bzw. Wörter einfach per Drag-and-Drop direkt in das Editor-Fenster "ziehen" können.
Alice hängt nicht direkt mit einer bestimmten Entwicklungsumgebung zusammen, sodass es nicht notwendig ist, sich mit einer bestimmten Syntax vertraut zu machen.

## Erster Einstieg

* Download
* Die Oberfläche
* Die erste eigene Animation

## Weitere Animationen

* Einfache Interaktion mit dem Benutzer
* Verwendung von Arrays
* Verwendung der For-Schleife

## Weiterführende Aufgaben

* einfache Aufgaben
* mittelschwere Aufgaben
* schwierige Aufgaben

## Fazit

Alice bietet Schülern/innen auch niedrigerer Schulstufen die Möglichkeit, sich mit der Idee der Objektorientierung vertraut zu machen, ohne sich in den Weiten programmiertechnischer Konstrukte zu verlieren. Gerade auf jüngere Schüler/innen kann die Art der Präsentation – in Form von 3-D-Animationen – motivierend und durchaus anregend wirken. Des Weiteren können Schüler/innen auch eigene Geschichten erfinden und diese dann am Computer zum Leben erwachen lassen, sodass ihre Kreativität und Phantasie auf spielerische Art gefördert wird. Diese Art des Zugangs adressiert vor allem an die Denk- und Verhaltensweisen von Mädchen, welche durch konventionelle Vermittlung von Programmiersprachen schnell das Interesse an der zu technisch-abstrakten Denkweise verlieren.
Für die tiefergehende Vermittlung der Objektorientierung ist diese Entwicklungsumgebung meines Erachtens nur eingeschränkt zu empfehlen, da die Welt zwar aus Objekten besteht, jedoch das Konzept einer Klasse nicht erwähnt wird. Für ein erstes Vertrautmachen mit Objekten und den damit eng in Verbindung stehenden Eigenschaften und Methoden ist dieses Programm aber sehr zu empfehlen.
Ich würde dieses Programm jedoch vorrangig in unteren Schulstufen im Unterricht einsetzen, da diese Art der Aufbereitung gerade jüngere Schüler/innen anspricht. Dieses Programm bietet zwar schier unerschöpfliche Möglichkeiten, diese erscheinen vielleicht auf den ersten Blick nicht transparent. Meines Erachtens sollte diese Umgebung vor allem für das erste Vertrautmachen mit dem Begriff des Programmierens und der Objektorientierung Einsatz finden. Diese Umgebung sollte wirklich nur als Einstieg verwendet werden, da die Gefahr bei längerer Verwendung besteht, dass die Schüler/innen den eigentlichen Zweck zunehmend aus den Augen verlieren.
Für ältere Schüler bietet diese Programmierumgebung unter anderem auch die Möglichkeit komplexere Computerspiele zu entwerfen. Dabei sollte man als Lehrperson jedenfalls darauf acht geben, dass der eigentliche Zweck dieser Umgebung von den Schülern/innen nicht aus den Augen verloren wird, wenn die Schüler/innen in erster Linie die grafische Komponente und Aufbereitung ins Auge fassen.

## Weblinks

* http://www.alice.org/

## Quellen

* ↑ National-Academy of Sciences. Reinventing schools. The technology is now. 1999, Seite 2

# Squeak EToys

Squeak ist eine objektorientierte Sprache, die sich aus der Programmiersprache Smalltalk entwickelt hat und größtenteils an den Smalltalk-80-Standard anlehnt. Squeak basiert auf einer einfachen, aber mächtigen Architektur – dem so genannten „Morphic Framework“ – welche von Smalltalk übernommen wurde. Das “Morphic Framework” wird von jedem visuellen Objekt, dem sogenannten “Morph”, verwendet, um über das graphische Interface, welches von Squeak verwendet wird, als Objekt angesprochen werden zu können.
Squeak soll ein strukturiertes und objektorientiertes Denken vermitteln und das Problemlösen mit Hilfe von graphischen Objekten forcieren.
Die Etoys-Umgebung stellt eine Skripting-Umgebung in deutscher Sprache dar und wurde in erster Linie für Kinder zwischen 8 – 12 Jahren entwickelt, um ihnen eine Programmierumgebung zur Verfügung zu stellen, die genau auf ihre Bedürfnisse zugeschnitten ist.
In Squeak Etoy werden sowohl die Erzeugung als auch die Operationen von Objekten unter Verwendung des Morphic Frameworks implementiert. Man sollte sich jedoch von dem Namen nicht täuschen lassen – es handelt sich keineswegs um ein Spielzeug, sondern um eine voll funktionsfähige Smalltalk-Umgebung.
Folgende Konzepte machen Squeak Etoys zu einem umfassenden Konstrukt für obig beschriebene Zielgruppe:
* Benutzer können animierte Objekte direkt im Interface erzeugen, die ihren eigenen Anweisungen folgen
* Benutzer können ihre eigenen Figuren zeichnen, die automatisch in ein Objekt umgewandelt werden
* Benutzer können ihr Programmierresultat unmittelbar betrachten.
* Die erstellten Objekte können an beliebige Positionen des GUIs bewegt werden.
Es können 2D- und 3D-Graphiken, Bilder, Texte, Webseiten, Präsentationen, Videos, Sound, MIDI,... eingebunden werden. Darüberhinaus besteht auch die Möglichkeit, die selbst erstellten Desktops anderen Benutzern über das Internet zur Verfügung zu stellen.
EToys verfügt über eine enorme Bandbreite an Möglichkeiten, um das Interesse für das Programmieren bei Kindern zu wecken.

## Erster Einstieg

* Download
* Die Oberfläche
* Der Malkasten
* Die Smarties eines Objekts
* Die Skriptsprache

## Weitere Projekte

* Ein Autorennen
* Erweitertes Autorennen mit Stoppuhr
* Erstellen von Animationen
* Graphische Veranschaulichung von Bewegung
* Temperaturkurve

## Anregungen für weiterführende Aufgaben

* Steueren Sie Ihr Auto mit Hilfe eines Lenkrades durch einen Hindernisparcours. Benutzen Sie die Stiftspuren zur Markierung des Pfades des Autos.
* Mit Hilfe eines Autos sollen verschiedene geometrische Figuren gezeichnet werden.
* Unter Verwendung von Sensoren (d.h. „Farbe sieht“-Kacheln) soll Ihr Auto einer gegebenen Straße folgen können. Fügen Sie Ihrem Projekt nun ein zweites Auto hinzu. Platzieren Sie die beiden Autos auf einer Straße mit unterschiedlich gefärbten Spuren. Gelingt es Ihnen, dass jedes Auto nur in seiner eigenen Spur entlang fährt?
* Versuchen Sie mit Hilfe von Sensoren ein beliebiges Objekt durch ein selbst entworfenes Labyrinth zu manövrieren.

## Fazit

Die grundlegenden Ideen und Konzepte von objektorientierten Sprachen werden den Schülern/innen anhand von dieser Umgebung kindgerecht und anschaulich nahe gebracht. Dabei können die Grundideen dieser Umgebung folgendermaßen umrissen werden:
* alles ist ein Objekt
* einfache Erstellen von Objekten und nahezu natürlichsprachliche Beschreibung des Verhaltens
* Simulation und Visualisierung von Abläufen
Dabei soll die kreative, entdeckenden und intuitive Komponente klar im Vordergrund stehen,um den Benutzern zu ermöglichen, ihre eigenen Ideen schnell und unkompliziert zum Ausdruck zu bringen. Das Hauptaugenmerk wird hierbei auf das konstruktivistische und handlungsorientierte Lernen gelegt.
Diese Umgebung eignet sich hervorragend für das erste langsame Vertrautmachen mit objektorientiertem Programmieren und kann in elementarster Form bereits im Volksschulalter eingesetzt werden. Schüler/innen erhalten auf diese Art einen spielerischen Zugang zu elementaren Konzepten der Programmierung. Die Tatsache, dass die graphische Komponente dabei klar in den Vordergrund gerückt wird, unterstützt den einfachen, intuitiven Umgang mit dieser Programmierumgebung. Ein großer Vorteil von Etoys liegt weiters in der sehr kurzen Einarbeitungszeit. Umfangreichere und komplexere Beispiele können ohne Weiteres in höheren Schulstufen sinnvoll eingesetzt werden. Mittels eigens erarbeiteter Beispiele können sogar naturwissenschaftliche Vorgänge von den Schülern/innen in selbständiger Erarbeitung simuliert werden, sodass daraus sogar fächerübergreifende Projekte (mit Mathematik, Physik,...) entstehen können.

## Weblinks

* http://www.squeak.de/
* http://www.squeak.org/
* http://www.squeakland.org/

## Quellen

* Allen-Conn, B.J. und Rose, K.: Powerful Ideas in the classroom. California, 2003
* Guzidal, M. und Rose, K.: Squeak - Open Personal Computing and Multimedia. Prentice Hall. New Jersey, 2002

# Java Hamster

Mit dem Java Hamster-Modell wird Programmieranfängern ein einfaches, aber mächtiges Modell zur Verfügung gestellt, mit dessen Hilfe Grundkonzepte der imperativen und objektorientierten Programmierung auf spielerische Art und Weise erlernt werden können. Dazu werden so genannte Hamster-Programme entwickelt, mit denen virtuelle Hamster durch eine virtuelle Landschaft gesteuert werden, die bestimmte Aufgaben lösen sollen. Die Grundidee dieses Modells besteht darin, mit einer geringen Anzahl von gleichzeitig zu berücksichtigenden Konzepten zu beginnen und diese Anzahl schrittweise zu erweitern, sodass die Schüler/innen nicht durch eine etwaiges Informationsüberangebot überfordert werden. Als Basis für dieses Modell wird die Programmiersprache Java verwendet. Mit Hilfe des „Hamster Simulators“ können derartige Hamsterprogramme erstellt und auch ausgeführt werden.
Viele Schüler/innen sehen in der Komplexität der Thematik Probleme und sind schnell überfordert und frustriert. Genau an diesem Punkt setzt das Hamster-Modell an, das in erster Linie für genau diese Zielgruppe entwickelt wurde.
Die besondere Stärke des Hamster-Simulators liegt in der Visualisierung der Ausführung eines Programms. Der Schüler sieht von Anfang an in einer ansprechenden Umgebung, was seine Programme bewirken.

## Erster Einstieg

* Download
* Die Oberfläche
* Das erste Programm

## Imperative Programmierung

* Verzweigungen
* Boole'sche Ausdrücke
* Schleifen
* Methoden

### Imperative Programmierbeispiele

* Elementare Aufgaben
* Komplexe Aufgaben

## Objektorientierte Programmierung

* Grundlagen der Objektorientierung
* Die Klasse Hamster
* Verfügbare Methoden
* Arrays
* Stringmanipulationen

### Objektorientierte Programmierbeispiele

* Elementare Aufgaben
* Komplexe Aufgaben

## Fazit

Diese Umgebung eignet sich hervorragend, um Programmieranfänger schrittweise mit programmiertechnischen Konzepten und dem Programmentwurf vertraut zu machen und in die Programmiersprache Java einzuführen. Gerade das Erlernen einer objektorientierten Sprache wie Java erfordert das mühevolle und langwierige Vermitteln von umfangreicher Theorie. Hier liegt jedoch der Vorteil dieses Hamster-Simulators: Die Schüler/innen können mit Hilfe dieser Umgebung eine Verbindung zwischen ihren Code-Schnipseln und den Auswirkungen derselbigen herstellen, da von Beginn an in einer ansprechenden Umgebung visualisiert wird, was ihre Programme bewirken.
Der Java-Hamster-Simulator stellt meines Erachtens eine geeignete Umgebung dar, um Schülern/innen die wichtigsten Konzepte der imperativen und objektorientierten Programmierung näher zu bringen und einen motivierenden Einstiegspunkt für das Programmieren mit Java zu liefern. Bei der eigentlichen objektorientierten Softwareentwicklung stößt dieses Modell jedoch aufgrund der mangelnden Komplexität und des geringen Umfangs der Hamster-Programme schnell an seine Grenzen. Mit Hilfe dieses Modells scheint es mir nicht wirklich möglich zu sein, weiterführende Konzepte der objektorientierten Programmierung in geeigneter Weise demonstrieren zu können.
Einige Schüler/innen könnten auch aufgrund der Ähnlichkeit der Aufgaben bzw. der auf die Hamster-Welt beschränkten Aufgabenstellungen schnell das Interesse an dieser Umgebung verlieren. Daher sollte der JavaHamster-Simulator in erster Linie motivierend und begleitend zur „richtigen“ Java-Programmierung eingesetzt werden.

## Weblinks

* http://www.java-hamster-modell.de/

## Quellen

* Boles, D.: Programmieren spielend gelernt mit dem Java-Hamster-Modell. Teubner-Verlag. Wiesbaden, 2006

# Ceebot 3 und Ceebot 4

Ceebot stellt eine gute Lösung dar für das im Kapitel über den JAVA-Hamster erwähnte Problem der zu geringen Variabilität und des geringen Komplexitätsgrads der Aufgabenstellungen. Ceebot ähnelt insofern dem Hamstermodell, als dass der Einstieg in die Grundstrukturen einer Programmiersprache über einen JAVA-programmierbaren Roboter vermittelt wird und die Funktion von Steuerstrukturen (Schleifen, Verzweigungen etc.) durch die Roboteraktionen veranschaulicht werden. Im Gegensatz zum JAVA-Hamster, der sich in Einzelschritten auf einem zweidimensionalen Raster fortbewegt, erfolgt die Bewegung des Ceebot-Roboters jedoch kontinuierlich und in einer graphisch aufwendig gestalteten 3D-Umgebung. Zusammen mit einer Vielzahl verschiedener Robotermodelle (zum Beispiel Ketten-, Flug- und Tauchroboter) und sonstiger vom Roboter manipulierbarer Objekte zu Gestaltung der Umgebung (Erzbrocken, Zielplattform, Abschrankungen, Gebäude, ...) wird dadurch die Gestaltung sehr abwechslungsreicher Übungen ermöglicht. Die Grundversion von Ceebot 4 beinhaltet über 110 vorgefertigte Übungsaufgaben. Eine eigene Schulversion umfasst zusätzlich eine Zusammenstellung von ca. 65 zum größten Teil neuen Übungsaufgaben speziell für Programmierunterricht in mittleren und höheren Schulen (Altersstufe: ca. 13-16 Jahre). Begleitende Arbeitsblätter mit Lückentexten zur Schulversion sind als (Schul)Buch erhältlich. Dieses Schulbuch ist in Österreich für den Unterrichtsgebrauch an höheren Schulen approbiert. Ceebot 3 entspricht vom Prinzip her Ceebot 4, allerdings sind die Programmieraufgaben einfacher und eher für jüngere SchülerInnen geeignet.

## Erster Einstieg mit der Demo-Version

Der Download der deutschen Demo-Version von Ceebot 4: http://www.ceebot.org/index.php?option=com_remository&Itemid=53&func=select&id=9
In der Demo-Version sind 15 der über 100 Programmierübungen freigeschaltet. Dies ermöglicht Programmieranfängern ein erstes "Hineinschnuppern" in das Thema an Hand von ersten, einfachen Programmierübungen. Bei den hinteren Übungen, vor allem bei den recht anspruchsvollen Wettbewerben (Roboterrennen, Roboterfußball und Roboter-Arena), bei denen es auf die Erstellung taktisch ausgefeilterer Programme ankommt, wird ein Programmieranfänger jedoch an seine Grenzen stoßen. Für Benutzer mit einer gewissen Programmiererfahrung stellen jedoch bereits die Wettbewerbe der Demo-Version eine interessante Herausforderung dar.

## Programmieren Lernen mit der Ceebot 4 Vollversion

Die Übungen der Vollversion ermöglichen dem Benutzer ein eigenständiges Erlernen der Elemente der prozeduralen Programmierung und gewisser Aspekte der objektorientierten Programmierung an Hand von schrittweise komplexeren Aufgabenstellungen. Am Ende der Übungsserie wird der Benutzer schrittweise zur Programmierung eines oder mehrerer Roboter mit dem Ziel eines zielgerichteten Verhaltens in einem Wettbewerb hingeführt (Roboterrennen, Roboterfußball und Roboter-Arena). Die Programmierung eines kooperativen, strategischen Verhaltens mehrerer Roboter stellt selbst für erfahrene Prgrammierer eine anspruchsvolle Aufgabe dar.

## Die Ceebot 4 Schulversion im Unterricht

Da der Programmierunterricht in mittleren und höheren Schulen systematische Kenntnisse einer Programmiersprache innerhalb eines begrenzten zeitlichen Rahmens vermitteln muss, wurde Ceebot 4 um eine eigenständige Übungsserie speziell für den Unterrichtseinsatz erweitert. Dabei werden auch jene Aspekte behandelt, die in der Standardversion etwas zu kurz zu kommen, aber im Schulunterricht unbedingt behandelt werden müssen (zum Beispiel das Thema "Dateien" oder der Geltungsbereich einer Variable). Zusammen mit den als Schulbuch erhältlichen Arbeitsblättern ermöglicht diese Übungsserie das weitgehend selbständige Erlernen aller grundlegenden Begriffe des prozeduralen Programmierens. Ceebot 4 dient damit Programmieranfängern als Einstiegshilfe für das Arbeiten mit einer "richtigen" Programmiersprache. Da die Programmierung des Ceebot-Roboters in JAVA erfolgt, bereitet auch das parallele Arbeiten mit Ceebot und einer JAVA/C/C++-Entwicklungsumgebung den Schülern keinerlei Probleme. Aus der bisherigen Unterrichtspraxis ist es sogar ausgesprochen zu empfehlen, nach der Behandlung der ersten Kapitel im Ceebot-Schulbuch parallel mit dem Erstellen erster einfacher Programme in einer "richtigen" Programmiersprache zu beginnen. Die oben erwähnten Ceebot-Wettbewerbe sind für den direkten Unterrichtsgebrauch nicht zu empfehlen, da hier recht viel Zeit für die Optimierung des Roboterverhaltens in der jeweiligen Wettbewerbssituation aufgewendet werden muss. Allenfalls das Roboterrennen kann noch in einem einigermaßen vertretbaren zeitlichen Rahmen im Unterricht eingesetzt werden. Um den motivierenden Aspekt der Wettberwerbe nicht zu verlieren, die das "Antreten" verschiedener SchülerInnen-Programme gegeneinander ermöglichen, wurde für die Schulversion ein eigener Sammelwettbewerb erstellt, der sich in einer oder maximal zwei Doppelstunden umsetzten lässt.

## Objektorientierte Programmierung mit Ceebot

Ceebot 4 selbst beruht darauf, dass alle in der "Ceebot-Welt" vorkommenden Gegenstände (Roboter, Gebäude, Batterien, Zielplattformen etc.) Instanzen einer vordefinierten Klasse "object" sind, deren Attribute (zum Beispiel Position und Geschwindigkeit des jeweiligen Gegenstands) auch bei der Roboterprogrammierung verwendet werden müssen. Auch sind sämtliche Roboterbefehle (move, turn, grab, drop, ...) eigentlich Methoden der Klasse "object". Allerdings wird dies dem Benutzer in der Grundversion von Ceebot 4 kaum bewusst und er beschränkt sich auf die "passive" Nutzung der vordefinierten Klasse "object" und anderer vordefinierter Klassen, kommt jedoch kaum in die Lage, selbst Klassen zu erstellen (obwohl dies natürlich in Ceebot möglich ist, weil es auf JAVA basiert). Ein tiefergreifendes Verständnis der Prinzipien der OOP (zum Beispiel Kapselung oder Vererbung) wird im Rahmen der Ceebot-Standardübungen nicht vermittelt. Demgegenüber sind die letzten Übungen der Schulversion von Ceebot 4 (zusammen mit den begleitenden Arbeitsblättern) so konzipiert, dass sie einen ersten Einstieg in die OOP darstellen. Zwei einfache Klassen (Zählmaschine und Stoppuhr) sind von den SchülerInnen selbst zu erstellen und mehrere Instanzen derselben in der Umgebung eines Roboter-Rennens zu verwenden. Allerdings sind, wie die Unterrichtspraxis zeigt, die SchülerInnen zu diesem Zeitpunkt bereits leicht so weit in ihren Programmierkenntnissen fortgeschritten, dass die Behandlung der tiefergreifenden Prinzipien OOP in einer "richtigen" JAVA/C/C++ - Entwicklungsumgebung erfolgen sollte.

## Fazit

Während die Standardversion von Ceebot 4 vor allem für den Privatgebrauch gedacht ist, lässt sich die Schulversion im Unterricht hervorragend für den Einstieg in die prozedurale Programmierung einsetzen. Bei konsequenter Benützung der als Schulbuch erhältlichen Arbeitsblätter und Sicherung der Lerninhalte durch regelmäßige Leistungsüberprüfungen lassen sich die Grundlagen der prozeduralen Programmierung effizient und nachhaltig unterrichten, sodass der weitere Umstieg auf eine "echte" Programmiersprache mit ähnlicher Syntax (JAVA/C/C++) kaum Probleme bereitet. Eine wichtige Rolle spielt dabei auch der motivierende Effekt der ansprechenden graphischen Gestaltung und der Vielfalt der Aufgabenstellungen.

## Weblinks

* Ceebot-Homepage und Diskussionsforum zum Programmierunterricht: http://www.ceebot.org
* Schulbuch "Programmieren lernen mit Ceebot": http://ceebot.veritas.at

# Greenfoot

Diese Umgebung soll Programmieranfängern das Konzept der Objektorientierung anhand der Programmiersprache Java näher bringen. Greenfoot ermöglicht die Erstellung unterschiedlicher an die jeweilige Benutzergruppe anpassbare Umgebungen. Mit Hilfe des zur Verfügung gestellten ausgeklügelten Meta-Frameworks können spezielle Varianten von Simulationen, so genannte Mikrowelten, auf einfache Art und Weise selbständig entworfen werden. Mit diesen Mikrowelten ist es möglich, interessantere und ansprechendere Programm als die standardmäßigen „hello world“-Programme anzufertigen.
Das Design von Greenfoot findet seine Ausgangsbasis in der Kombination von zwei essentiellen Komponenten, über die eine Lernumgebung verfügen sollte: Mikrowelten und direkte Interaktion des Benutzers mit der Umgebung. Eine der Hauptstärken dieser Mikrowelten liegt in der exzellenten Visualisierung von Objekten, ihrem Zustand und ihrem Verhalten.
Um das Interesse von Schülern für eine Lernumgebung zu wecken, muss die Möglichkeit bestehen, Beispiele in Bezug auf Geschlecht, Alter und anderer individueller Faktoren zu entwickeln. Um dieser Forderung gerecht zu werden, unterstützt Greenfoot ein breitgefächrtes Spektrum an unterschiedlichen Beispielen und Szenarien. Die dadurch gegebene Flexibilität bedingt einfach vorzunehmende Komplexitätsabstufungen der zur Verfügung gestellten Aufgaben bzw. Beispiele. Weiters sollen die Aktionen der Schüler/innen ein unmittelbares visuelles Feedback nach sich ziehen.

## Erster Einstieg

* Download
* Die Oberfläche
* Das erste Szenario

## Die erste eigene Mikrowelt

Die erste eigene Mikrowelt

## Fazit

Bedingt durch die Flexibilität und Anpassbarkeit im Entwurf von individuellen Mikrowelten kann man als Lehrperson neue, auf die Interessen der Schüler/innen zugeschnittene Aufgaben entwickeln, sodass dadurch auch unterschiedliche Leistungsniveaus der Schüler/innen eingegangen werden kann. Viele andere Lernumgebungen besitzen den Nachteil, dass das vorgegebene Szenario nicht weiter modifiziert werden kann, sodass die Schüler/innen selbst bei einer anfangs interessanten Umgebung nach einiger Zeit das Interesse verlieren. Genau an diesem Punkt setzt das verfügbare Meta-Framework von Greenfoot an: Die Schüler/innen müssen keine eigenständige Applikation schreiben, sondern nur kleine Teile des Codes.
Ein weiterer Vorteil dieser Umgebung liegt in der Verfügbarkeit von einigen verschiedenen Mikrowelten, welche bereits frei verfügbar unter http://www.greenfoot.org/scenarios/index.html heruntergeladen werden können.
Die Veranschaulichung von objekt-orientierten Konzepten sollte dabei im Vordergrund stehen. Die von den Schülern/innen angeeigneten Fertigkeiten können ohne Probleme auf andere Umgebungen übertragen werden. Den nächsten Schritt im Umgang mit Objektorientierung kann beispielsweise die Programmierumgebung Blue J darstellen, welche eigens für Ausbildungszwecke entworfen wurde. Mit Hilfe dieser Umgebung lernen Schüler/innen Klassen und ihre Beziehungen untereinander mit Hilfe einer UML-ähnlichen Notation festzulegen.

## Weblinks

* http://www.greenfoot.org/
* http://www.greenfoot-center.de/

# Wichtige Information zum Herunterladen der Beispieldateien

Bei einigen hier vorgestellten Dateien handelt es sich uuencodierte Versionen der binären Originalversionen der Dateien, d.h. diese Vorlagen bestehen nur mehr aus druckbaren ASCII-Zeichen. Das Programm w:Uuencode (verfügbar unter allen Unix-Varianten incl. Mac OS-X, für MS Windows bei w:Cygwin dabei oder von UUENCODE/UUDECODE herunterladbar) kann diese uuencodierten Daten wieder in die binären Originalversionen der Dateien zurückkodieren. Kopieren Sie den bei den einzelnen Beispielen angeführten ASCII-Text in einen Editor und speichern Sie diese Datei mit der Endung .uue ab. Um diese Datei zu dekodieren, muss das Programm in der Konsole mit folgender Syntax ausgeführt werden:
also beispielsweise
Die jeweiligen ASCII-Texte finden Sie bei den einzelnen Programmierbeispielen!

# Weitere Lernumgebungen (weiterführende Links)
## Niki - der Roboter

Programm, das auf Grund der einfachen Bedienung und des begrenzten Befehlssatzes den Einstieg in die Programmierung erleichtern soll. Aufgabe ist es, den Roboter "Niki", der sich bewegen und Gegenstände aufsammeln und abladen kann, zu programmieren. Die Umgebung ist in 2D gehalten.
Wikipedia
http://www.hupfeld-software.de/pmwiki/pmwiki.php

## Kara

Programm zur Vermittlung der Grundideen der objektorientierten Programmierung auf Basis des Konzepts endlicher Automaten - aufgrund der vielfältigen Erweiterungen (JavaKara, MultiKara, RubyKara, JavaScriptKara, TuringKara, LegoKara, PythonKara) kann sich der Einsatz über fast alle Jahrgangsstufen erstrecken:
* http://www.swisseduc.ch/informatik/karatojava/kara/

## Roboter Karol

Programmierumgebung, die in erster Linie für das Einführen in das Programmieren und in die Algorithmik konzipiert wurde:
* http://www.schule.bayern.de/karol/

## Blue J

Programmierumgebung, die eigens für Ausbildungszwecke entworfen wurde - Schüler/innen lernen Klassen und ihre Beziehungen untereinander mit Hilfe einer UML-ähnlichen Notation festzulegen:
* http://www.bluej.org/

## EOS (einfache objektorientierte Sprache)

Objektorientierte Programmierumgebung mit einfacher Syntax. EOS ist eine IDE mit Interpreter für eine bewusst einfach gehaltene objektorientierte Sprache, die es Schülern ab der Jahrgangsstufe 6 ermöglichen soll, erste Einblicke in die objektorientierte Programmierung zu gewinnen.
* http://www.pabst-software.de/doku.php/programme:eos:start

## AntMe!

Ziel des Spiel ist es, mit C#, Visual Basic oder (in Kürze) C++ Ameisen objektorientiert zu programmieren, die miteinander interagieren und bestimmte Aufgaben lösen sollen.
* http://www.microsoft.com/germany/msdn/coding4fun/antme/default.mspx

## AntMe! ab 06.12.2007

* http://antme.net/

## Scratch

In Scratch können Programmieranfänger Miniwelten selbst zeichnen bzw. aus vorhandenen Materialien zusammenstellen. Objekten der Welt können dann Programme bzw. Skripte zugeordnet werden, die ihr Verhalten beschreiben. Die Programmierung erfolgt ausschließlich mit visuellen Elementen, Syntaxfehler sind nicht möglich. Erstellte Programme können über eine Online-Galerie anderen zugänglich gemacht werden.
* http://scratch.mit.edu/

## Solist

Solist ist ein Meta-Werkzeug zum Erstellen eigenständiger Mikrowelten. Genutzt wird dazu eine grafisch-interaktive Programmierumgebung und eine spezielle Programmier-API. Auf der Solist-Website werden zahlreiche mit Hilfe von Solist bereits erstellte "micro worlds" zur Verfügung gestellt, unter anderem alternative Lernumgebungen für das Hamster-Modell, Kara und Turtlegraphics.
* http://www.programmierkurs-java.de/solist

## X Logo

XLogo ist eine in Java geschriebene (darum auf allen Plattformen lauffähige) Logo Implementation. Logo ist eine sehr einfache, grafikbasierte Programmiersprache, mit deren Hilfe Lernende sehr schnell grundlegende Begriffe wie Funktion und Rekursion verstehen und anwenden können.
In Logo wird eine sogenannte "Turtle", die mit einem Stift ausgestattet ist, gesteuert und mit ihr Figuren gezeichnet. Das System eignet sich auch wunderbar, um Fraktale zu zeichnen.