Return of the Killertomaten

Die zweite Doppelstunde Killertomaten (s. hier) nebst beratendem Unterrichtsbesuch vom Fachleiter liegt nun auch schon wieder längere Zeit hinter mir. Ich hatte noch am selben Nachmittag angefangen darüber zu bloggen, dann kamen mir aber die Familie, die Ferien und (was ja anscheinend nicht untypisch ist) Krankheit dazwischen. Damit ich hier wenigstens noch halbwegs aktuell bleibe, will ich mal das Wichtigste zusammenfassen.

Vorsicht: Dieser Post ist für Nicht-Informatiklehrer wahrscheinlich zu technisch.

Killertomaten machen selbst vor Apple-Produkten nicht Halt!Vormerkung Rant: Ich habe jetzt in verschiedenen Klassen und bei verschiedenen Kollegen gesehen, wie an meiner Schule bisher objektorientiertes Programmieren vermittelt wird.  Benutzt wurde in den Stunden, die ich gesehen habe, immer Java (PHP gibt’s auch, aber ich war noch nie dabei).  Sehr unterschiedlich waren die verwendeten Editoren: von Eclipse über BlueJ bis zu JOE und sogar schlicht Windows Notepad.  Gemeinsam war allen besuchten Stunden, dass die Unterrichtsbeispiele häufig gar nicht besonders objektorientiert waren (Zinseszinsrechnung???) und die SuS* im besten Fall relativ mechanisch Java-Idiome anwenden ohne sie wirklich zu verstehen. (Das wichtigste Kennzeichen von OOP ist anscheinend, dass man get() und set() Methoden schreiben muss!)  Im schlechtesten Fall haben sich der Schüler bzw sein Lehrer damit abgefunden, dass Informatik unverständlich und doof ist bzw. der Schüler unverständig und doof ist. Ich bin ja, wenn auch nicht mehr jung, so doch unerfahren und naiv genug immer noch zu glauben, dass das nicht so sein muss.  Und deswegen habe ich einfach mal zwei Doppelstunden lang etwas ausprobiert. (An dieser Stelle: Danke dem Kollegen, der mir das in seiner Klasse ermöglicht hat!)
Rant Ende.

Zur Motivation: Objektorientierung erschließt sich am besten, so meine Ausgangsthese, wenn die Objekte so konkret wie möglich werden, wenn man sie sehen und, wenn schon nicht anfassen, so doch wenigstens mit Maus und Tastatur abknallen beeinflussen kann. Und wenn es viele sind! Denn dann kann man erkennen, dass es ein eigentlich sehr intuitiver und ordnungsstiftender Ansatz ist, wenn jedes Objekt sich um sich selbst kümmert, d.h. seine Eigenschaften selbst verwaltet und seine Fähigkeiten selbst anwendet.

Zur Klasse: Eine Oberstufenklasse, die seit September (also einem Dreiviertelschuljahr) zwei Stunden pro Woche ein Fach namens „OOP“ hat und dort in Java programmiert.  Beste Voraussetzungen also! Ich kenne die Klasse ganz gut aus Mathe, in Informatik hatte ich sie aber bisher noch nicht unterrichtet.  Sie sind nett, ziemlich faul und – richtig geraten – zu 90 Prozent männlichen Geschlechts.

Zum Projekt: In der ersten Doppelstunde durften ein paar Freiwillige erstmal am Beamer versuchen, sich gegenseitig in meiner ersten Version des Spiels zu überbieten.  Diese Version benutzt noch einfache rote Kreise – was aber dem Spielspaß der Freiwilligen keinen Abbruch getan hat…

Tomaten als Kreise

Dann habe ich Processing eingeführt und die Schüler viel damit experimentieren lassen. Zuerst haben sie randomisierte, aber noch statische Bilder erzeugt (Arbeitsauftrag „Ein modernes Kunstwerk“), dann mit draw() auch Animationen.  Am Schluss der Stunde hatten sie einen einzelnen roten Kreis programmiert, der sich über Bildschirm bewegt und am Rand „abprallt“, d.h. seine Richtung ändert.  Allerdings war alles noch völlig prozedural: Koordinaten, Richtung und Größe des Kreises bzw. unserer ersten Tomatenapproximation waren in globalen Variablen gespeichert.  Kein Problem bei nur einer Tomate – aber kann man so eine Armee mordlüstiger Killertomaten generieren? Wohl kaum.  Ein erstes Problembewusstsein für die Notwendigkeit besserer Datenstrukturen war also geweckt.

Diese Stunde hat den Schülern, glaube ich, großen Spaß gemacht.  Einige haben gebeten, noch in die Pause hineinarbeiten zu können, um den Richtungswechsel am Fensterrand noch hinzubekommen. Da ist der Herr Referendar natürlich glücklich…

In der Folgestunde wurde das Problem der Erweiterbarkeit dann wieder aufgegriffen („Wir wollen doch eine Invasion – wir brauchen mehr Tomaten!!!“).  Aber dazu bräuchten wir noch viel mehr globale Variablen.  Wäre es da nicht besser, jede Tomate wäre, wie in der Realität, ein eigenes Objekt und würde ihren eigenen Zustand speichern?

Anhand der Frage „Was passt nicht in die Reihe: x, y, durchmesser, punktestand, xdir, ydir?“ sollten die Schüler Eigenschaften einer Klasse Tomate diskutieren und entwerfen.  Die Details erspare ich euch und mir, aber es wurde doch schnell offensichtlich, dass die Schüler es nicht gewohnt sind, selbst zu modellieren, sondern nur, Vorgegebenes (z.B. ein UML-Klassendiagramm) zu implementieren.  Die Diskussion war gut, aber trotzdem fiel es den Schülern wahnsinnig schwer, ihre (richtigen) Erkenntnisse in ein eigenes Design umzusetzen – obwohl eigentlich nur ein paar globale Variablen aus der prozeduralen Musterlösung in Attribute umgewandelt werden mussten.

Zwei, die es geschafft hatten, führten dann ihre Lösung vor.  Sie hatten eine einzige Methode move() verwendet.  Von draw() 60mal pro Sekunde aufgerufen, werden in dieser Methode die Koordinaten sowie, bei Bedarf, der Richtungsvektor der Tomate angepasst und die Tomate als roten Kreis an die neue Position gezeichnet. Prima so. Als Alternative zeigte ich auch noch meine eigene Version, in der es eine separate Methode display() gibt, d.h. die Bewegung ist von der Darstellung des Objekts entkoppelt.  Warum das Sinn macht, konnte ich live vorführen, indem ich „under the hood“, nur durch Veränderung eines einzigen Befehls in display(), statt des Kreises plötzlich eine Grafik anzeigen ließ. Die Schüler haben mitgetippt und selbst plötzlich eine „echte“ Tomate auf dem Bildschirm animiert! Ich mag mich ja sehr täuschen, aber sie fanden’s schon cool, wie schnell sie das Aussehen ihres Spiels „gepimpt“ hatten – und das, ohne dass die aufrufende Funktion draw() auch nur mitbekommen hat, dass display() plötzlich etwas ganz anderes macht.

Eine weitere sehr schöne Diskussion hatten wir dann, als es darum ging, wie man denn nun von außen mit der Tomate interagieren kann. „Hier fehlt die Action – das soll ja schließlich ein Shooter werden!“ Also auf zur Überprüfung der Treffsicherheit der Spieler. Wieder haben wir festgestellt, dass die Tomate selbst ihre Koordinaten und ihre Größe am besten kennt und dass also auch sie es ist, die am einfachsten die Frage „Zeigt die Maus auf dich?“ beantworten kann.  Nachdem wir über Bounding Boxes, das verwandte Thema der Mouseover-Effekte in CSS und das Problem teilweise transparenter Grafiken wirklich schön diskutiert hatten (kam alles nicht von mir und war auch so nicht geplant, aber ich habe es laufen lassen, weil es toll war, die Schüler beim Mitdenken zu erleben), haben wir uns schließlich darauf geeinigt, dass einfacher meistens besser ist und wir deshalb eine Methode istUnterMauszeiger() schreiben, die die alte Idee der Tomate als Kreis benutzt und schlicht abfragt, ob die Distanz zwischen Mauszeiger und Kreismittelpunkt kleiner als der Radius ist.  Mit diesem schönen Plan ging die Stunde dann zuende…

Fazit: Mir war vorher klar, dass das Projekt, ein Spiel in zwei Doppelstunden zu schreiben ein utopisches ist.  Umso mehr, weil die Klasse ja weder mich, noch Processing, noch eine solche Vorgehensweise kannte.  Aber ich wollte es partout probieren!  Um zu sehen, ob Processing mit seinem schnellen Feedback-Loop (tippen, starten, verbessern, wieder starten!) den Schüler ein kleines bisschen Programmier-Flow bringt, ob graphische Objekte den OOP-Gedanken für die Schüler anschaulicher machen, und aus der vagen Intuition heraus, dass Gamification auch funktioniert, wenn man ein Spiel nicht spielt, sondern entwickelt.

Und hat es funktioniert? Ja und nein. Ich habe die Schüler überfordert, durchaus bewusst, aber das macht es ja nicht besser.  Insbesondere in der zweiten, der OOP-Stunde, fürchte ich, dass die meisten nicht wirklich viel gelernt haben.  Ich habe sie einfach nicht da abgeholt, wo sie standen, sondern eine Stunde gehalten die mir konzeptuell Spaß gemacht hat (und meinem Fachleiter, glaube ich, auch), aber an der Realität ihres Vorwissens und Könnens, das ich vorher aber auch nur schlecht einschätzen konnte, vorbeiging.  Andererseits: Processing hat sehr gut funktioniert, das hat die erste Doppelstunde gezeigt. Und das grundsätzliche Interesse, die Bereitschaft mitzudenken, war ebenfalls spürbar, bei einigen jedenfalls.  Besser als Zinseszinsrechnung war es wahrscheinlich sogar für alle, behaupte ich jetzt einfach mal…

Mein Experiment habe ich gehabt.  Jetzt, wo ich noch relativ am Anfang des Referendariats stehe, möchte ich mir solche Versuchsballone auch noch ab und zu zugestehen. Auf Dauer? Nicht an den Schülern vorbei!

Insgesamt ist mein Fazit aber doch ein hoffnungsvolles und lautet: Wenn es nur schon nächstes Schuljahr wäre und ich einen eigenen, festen Kurs hätte…
Dann, glaube ich, könnte man durchaus die Konzepte, die ich hier wider besseres Wissen vorausgesetzt hatte, in schülergerechtem Tempo einführen.  Vielleicht sogar so, dass sie nach sechs Monaten so weit verfestigt sind, dass man ein solches „Projektchen“ stemmen kann.  Wir werden sehen.

* Ich benutze das „SuS“ jetzt testweise auch mal, damit ich mich nicht so sexistisch fühle, wenn ich wieder nur „Schüler“ geschrieben habe oder so retro-feministisch, wenn ich „SchülerInnen“ schreibe oder so missverständlich bei „Schülerinnen“ oder so umstandskrämerisch bei „Schülerinnnen und Schülern“. Aber „SuS“? Das ist doch eine Abkürzung und kein Wort! Mein Sprachgefühl sträubt sich und zieht sich in den Schmollwinkel zurück. Auch recht, dann habe ich ja jetzt alle Freiheiten, IMHO. LOL 😉  OMG!

Advertisements

3 Gedanken zu „Return of the Killertomaten

  1. Liest sich gut. Besonders dein selbstkritisches Fazit gefällt mir.

    Es ist ein schöner Ansatz, der imho das OOP schon gut trifft, und dürfte sicher auch ohne Schülerüberforderung umsetzbar sein. Verfolg das mal weiter, ich drücke dir die Daumen, dass du an deiner Schule frischen Wind in die OOP bringen kannst. Heißt das Fach bei euch ernsthaft OOP?!

    Aber ich wage zu behaupten, dass mit Gamification etwas anderes gemeint ist 😉 Dein verlinkter WP-Artikel sagt „Gamification bezeichnet man die Anwendung spieltypischer Elemente und Prozesse in spielfremdem Kontext“. Ja, Spieleentwicklung als Rahmen für Programmierung macht sich gut und motiviert die Schüler, aber weder ist das Killertomaten-Spiel ein ’spielfremder Kontext‘, noch hast du spieltypische Elemente, wie sie WP beschreibt, in der Stunde genutzt. 🙂

    • Du hast vollkommen recht, was den Begriff „Gamification“ betrifft. Das sollte eigentlich ein bisschen tongue-in-cheek sein – liest sich aber, zugegeben, oben nicht so. Ich finde Gamification nicht uninteressant, in vielen Kontexten aber auch ein bisschen albern. Was ich mit dem Satz sagen wollte, ist: Informatikunterricht kann etwas sehr Spielerisches haben, ohne seine Ernsthaftigkeit zu verlieren. Begeisterung und permanente positive Verstärkung liefern eben nicht nur Spiele selbst (oder gamifizierte „echte“ Anwendungen), sondern auch ein kreativer Prozess wie die Entwicklung eines Spiels.

      Zum Fach „OOP“: Das ist so ne Art Lernfeld, das aus dem größeren Fach Informationstechnologie herausgelöst wurde. Dazu bald mehr. Ich habe einen längeren Blogeintrag zu meiner Schulart, die ich absichtlich bisher hier noch nirgends erwähnt habe, in Arbeit.

      • „Informatikunterricht kann etwas sehr Spielerisches haben, ohne seine Ernsthaftigkeit zu verlieren. Begeisterung und permanente positive Verstärkung liefern eben nicht nur Spiele selbst (oder gamifizierte “echte” Anwendungen), sondern auch ein kreativer Prozess wie die Entwicklung eines Spiels.“

        Na, da stimm ich dir zu 🙂 Das hab ich selbst schon erlebt, auch aus Entwickler-Perspektive. Und wenn die Alternative dazu solche ’sinnlosen‘ Ziele wie ein Programm für Zinseszinsrechnung ist, dann haben es die Killertomaten besonders leicht 😉 Ich wünsche dir, dass deine Kollegen sich anstecken lassen.

        Na dann bin ich gespannt und geduldig: Hoffentlich findest du demnächst Zeit, über Lernfelder und ungewöhnliche Schularten zu schreiben.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s