Informatikunterricht – Programmieren… ja und wenn ja wieviel?

Im Informatikunterricht bin ich nach meinen ersten Berufsjahren noch am rätseln darüber, was der „Kern“ des Faches ist.

Am meisten bin ich da am überlegen, wo ich die Prioritäten in der Q1 legen soll. Die Themen in dieser Jahrgangsstufe sind objektorientiertes Programmieren, sowie Algorithmen.

Beim Programmieren gibt es zwei vollkommen unterschiedliche Ansätze:

  • Ein Ansatz versucht mit Hilfe von spielerischer Umgebungen wie GameGridGreenfoot oder dem Programmieren von IDEs mit integrierten GUI-Erzeugern wie z.B. dem Java-Editor den Spaß am Programmieren zu fördern. Dadurch, dass die Schüler schnell Ergebnisse erzeugen können, Spiele und interaktive Windows-Anwendungen programmieren, soll die Motivation gefördert werden. Das Problem bei diesem Ansatz: Dadurch, dass man gleichzeitig sowohl mit imperativen Sprachelementen und mit Klassen und Objekten arbeiten muss, müssen die Schüler sehr viele Sprachkonstrukte gleichzeitig lernen, oft führt kein Weg daran vorbei Sprachelemente erst einmal zu nutzen und später genauer zu verstehen.
  • Ein weiterer Ansatz setzt die Programmierkonzepte in den Vordergrund, Man verzichtet auf optisch ansprechende Anwendungen zugunsten einer Fokussierung auf Sprachkonstrukte. Es reicht dann, die Ausgabe auf eine Kommandozeile auszugeben, dafür können die Schüler ein Programmierkonzept nach dem Anderen lernen.
  • Weiterhin gibt es noch Konzepte wie LOGO oder verschiedene Implementierungen von Turtle-Grafik. Das schöne an diesem Ansatz ist, dass hier die grundlegenden Programmierkonzepte gelernt werden können und gleichzeitig Ergebnisse sichtbar sind.

Nachdem ich jetzt das erste Jahr komplett mit Greenfoot gearbeitet habe, muss ich sagen, dass ich mit dem ersten Ansatz nicht glücklich geworden bin. Die Schüler mit Vorerfahrungen haben hier zwar tolle Sachen gemacht. Ich hatte aber das Gefühl, dass gerade die Schüler, die Schwierigkeiten beim Programmieren hatten, es einfacher gehabt hätten, wenn sich der Unterricht auf die wesentlichen Konzepte beschränkt hätte.

Das nächste mal werde ich hier also einen anderen Weg gehen und nach einigen Wochen Turtle-Grafik systematisch nacheinander einzelne Programmierkonzepte einführen und schauen, ob meine Schüler und ich damit glücklicher werden.

Mein zweites Problem folgt dann aber auch schon: Wie wichtig ist mir das Programmieren eigentlich überhaupt?

Im Informatikunterricht der E2 und Q1 ist es so, dass sich beim Programmieren die Spreu vom Weizen trennt: Der gerne programmiert und dies auch in seiner Freizeit tut, der wird auch in der Q-Phase glücklich werden. Wer nur die 2 Stunden absitzt und sich ansonsten nicht mit Informatik beschäftigt, der wird auch am Programmieren scheitern.

Dies ist deshalb schade, weil das Fach Informatik noch so viel mehr bietet als das. Entweder man kann beim Programmieren in die Tiefe gehen und sich immer mehr Techniken aneignen, um Probleme zu lösen, oder man kann die Breite des Faches entdecken und z.B. die unterschiedlichsten Algorithmen explorieren. Mein aktueller Q1-Kurs hat z.B. nach einem programmierintensiven Start in das Schuljahr und erster Untersuchung von Such- und Sortieralgorithmen den Wunsch geäußert einen stärkeren Fokus auf die Algorithmik zu legen.

Dabei kam mir der Gedanke, dass man sogar fast komplett auf das Programmieren verzichten könnte. Die Informatik ist schließlich ein Fach, dass eine unglaubliche Bandbreite an Themen und Gebieten vorzuweisen hat. Was ist im Sinne der Vorbereitung auf das Studium wichtiger? Den Schülern gute Programmierkenntnisse beibringen (zweifellos eine wichtige Fähigkeit) oder die ganze Bandbreite des Faches Informatik aufzeigen, um die Vielfältigkeit dieser Wissenschaft zu vermitteln?

Die grundlegenden Fragen „Wie viel Programmierung braucht der Schüler und wie führt man diese am besten ein?“ werden mich auf jeden Fall noch eine ganze Zeit lang beschäftigen

Blender-Projektwoche

Für ein gemeinsames Projekt bei der kommenden Projektwoche arbeite ich mich gerade wieder in Blender ein.

Ich habe Blender zweimal im Informatikunterricht angeboten und mich selbst mühsam eingearbeitet – Im Studium habe ich zwar einen Raytracer programmiert, aber nicht mit einem Modellierungstool gearbeitet. Jetzt habe ich das Glück mit einem erfahrenen Kollegen zusammenzuarbeiten, der in seiner Freizeit mit Blender modelliert. Ich freue mich schon auf alles, was ich in den kommenden Tagen lernen kann, so dass ich die Kenntnisse das nächste mal in einen WU-Informatik einbauen kann.

In dem Zuge habe ich auf Anraten meines Kollegen die Tutorial-Videos auf https://www.blenderguru.com angeschaut und konnte noch mal einiges lernen und systematisieren. Die folgende Tutorial-Serie kann ich daher nur für euch empfehlen, wenn ihr in Blender einsteigen wollt: https://www.blenderguru.com/tutorials/blender-beginner-tutorial-series

Hier meine  Umsetzung des Tutorials (An einigen Stellen bin ich etwas faul vorgegangen, da ich die Schritte vorher schon einmal separat gemacht hatte und keine Lust hatte mehr sie mit gleichem Aufwand genauso detailliert und genau zu machen.

Und noch eines der Lieblingsspielzeuge unseres Kindes:

EDIT: Das schöne an solchen Projekten ist ja, dass talentierte Schüler mit dem Input denen man ihnen gibt alles mögliche umsetzen. Einige der Resultate waren wirklich beeindruckend.

Gamegrid / Gamegridcards

Prinzipiell mag ich Entwicklungsumgebungen wie Greenfoot https://www.greenfoot.org/door . Ich denke, dass diese dabei helfen können

 

 

  • a) Die Motivation der Schüler zu steigern
  • b) Ein Verständnis über den Zusammenhang von Klassen und Objekten zu fördern

Leider hat sich bei mir die 3er Version von Greenfoot als nicht stabil genug herausgestellt. Am Ende waren die Schüler hauptsächlich frustriert, da ihr Programm oft abstürzt. Außerdem ist die Fehlersuche -einer der Kernelemente des Programmierens- in Greenfoot wirklich schlecht gelöst.

Eclipse hat sich bei ersten Versuchen schonmal als bessere Alternative bewiesen. Zwar müssen die Schüler zunächst mal mit einigem Overhead klarkommen, wenn dieser aber aus dem Weg geräumt wurde hat man die Vorteile einer mächtigen Entwicklungsumgebung auf seiner Seite. Insbesondere die inkrementelle Fehlersuche erfüllt im schulischen Umfeld auch eine didaktische Funktion, da die Schüler direktes Feedback auf ihre Aktionen erhalten und nicht warten müssen, bis sie auf compilieren gedrückt haben. Dennoch vermisste ich zunächst die Vorzüge von Greenfoot, bis mir folgende Alternative ins Auge fiel:

http://www.java-online.ch/gamegrid/index.php

GameGrid ist ein Framework zum Programmieren von Spielen, dass sehr stark an Greenfoot erinnert. Es gibt hier aber keine graphische Entwicklungsumgebung, sondern die Programme können in jeder Umgebung geschrieben werden, die man bevorzugt (z.B. Eclipse). Alternativ gibt es auch einen Online-Editor, mit dem man Programme direkt bearbeiten kann. Man findet online auch eine Android-Version, so dass es mit dem Online-Editor ohne weiteres möglich ist, auch Android-Spiele mit GameGrid zu entwickeln.

Sowohl die Syntax als auch die Menüleiste bei einem neu erstellten Spiel erinnern extrem stark an Greenfoot

Jeder Actor verfügt wie bei Greenfoot über eine act()-Funktion, die nach einem Klick auf Run in einer Endlosschleife ausgeführt wird, Grafiken und Sounds können ohne größere Schwierigkeiten hinzugefügt werden.  Nicht nur Spiele in einem Grid, sondern auch Pixel-basierte Spiele sind möglich (Mein erstes Spiel handelte von einer Rakete, die Meteoren ausweicht).

Bei meinen ersten Experimenten bin ich auch auf einige Grenzen gestoßen. Die Umgebung ist definitiv nicht für Personen geeignet, die sich tiefer in die 2D-Spieleentwicklung vertiefen wollen. Für schulische Zwecke halte ich sie aber sehr geeignet, auch weil hier einige gute didaktische Vereinfachungen getroffen wurden

Ich habe eine allererste Version von „GameGridCards“ erstellt, mit denen die Schüler mit Gamegrid+Eclipse relativ selbstständig erste Projekte erstellen können. Ich stelle diese zur Verfügung (mit dem Hinweis, dass diese sicher noch an einigen Stellen Arbeit benötigen).

-> Download Gamegridcards

Greenfoot / Greeps

Insgesamt war ich enttäuscht von der JAVA-Lernplattform Greenfoot ( https://www.greenfoot.org/door ): Zwar ist die IDE schön, die Idee mit den Miniwelten toll, aber in den letzten Monaten sind meinen Schülern so viele Greenfoot-Bugs begegnet, das alle nur noch genervt waren. Vielleicht war es auch ein Fehler auf die 3er Version zu setzen und nicht die stabile 2er Version zu wählen, die auf den Schulrechnern vorinstalliert ist.

Dennoch gab es ein Highlight:  In der Greeps Miniwelt ( https://www.greenfoot.org/competition/greeps/ ) müssen Aliens Tomaten einsammeln, die Teams traten gegeneinander an und konnten auf 3 Karten ihre Greeps trainieren, während auf den restlichen Karten dann der Sieger ausgetragen wurde: https://www.greenfoot.org/competition/greeps/ . Alleine für diese Miniwelt hat sich Greenfoot dann doch gelohnt. Im Greenroom gibt es übrigens einen Nachfolger, vielleicht probiere ich diesen mal aus…

Der MIT-App Inventor

Der MIT-App Inventor ist hier zu finden http://appinventor.mit.edu/explore/ und ist eine großartige Software. In einem 1-Tag Kurs haben die Schüler ein Malprogramm entwickelt, dessen Hintergrund per Handy-Foto aufgenommen werden konnte. Am Ende durften die Schüler ihr Programm weiterentwickeln. Die Begeisterung war sehr groß, als eine Schülerin herausfand, wie man das Programm via What’s App mit seinen Freunden teilen kann.

Das folgende GIF zeigt, wie einfach es ist, die Kamera des Handys zu verwenden:

Ein paar Details zur Umsetzung:

Ich habe nicht die App AICompanion verwendet, sondern die Schüler haben fertig programmierte Apps direkt per QR-Code auf ihr Handy aufgeladen. Daher konnte ich mit meinem Handy ein eigenes WLAN aufspannen. Da man für die Entwicklung Google-Accounts benutzt, habe ich vorher einige anonymisierte Accounts erstellt. Allerdings habe ich auch gelernt, dass ein WLAN Hotspot, den man mit seinem Handy einrichtet, nicht mehr als ein Dutzend Besucher zulässt.