In den letzten Wochen hat meine 2D-Spiele-Enginge GameGridP große Fortschritte gemacht. All meine Kurse (Q4, Q2, E2) mussten mehrere Stunden mit der Umgebung programmieren, so dass für einige Wochen der Hauptteil meiner Informatik-Vorbereitung neben der Weiterentwicklung meines Python-Online-Kurses hauptsächlich daraus bestand, die Entwicklungsumgebung beständig weiter zu entwickeln.

So findet sich hier z.B. eine umfangreiche Dokumentation. Github zeigt mir an, dass ich inzwischen 60 Commits durchgeführt habe. Die Hauptdateien mit dem GameGrid, seinen Subklassen DataBaseGrid, GUIGrid, CellGrid und PixelGrid sowie der Actor-Klasse umfassen inzwischen über 2100 Zeilen Code, dazu kommen inzwischen verschniedene Snippets, die mir dabei helfen den Code zu testen und für alle anderen Inspiration und Umsetzungshilfe sein können.

Die nächsten Wochen wird sich daher auch wenig an der API ändern. Über die Sommerferien habe ich dann nochmal die ein oder andere Idee, wie sich die Perfomance verbessern lässt und wie ich die Klassen etwas übersichtlicher designen kann. Solange die Schüler an ihren Projekten arbeiten möchte ich den grundsätzlichen Aufbau möglichst nicht mehr anstasten.

Was habe ich in der Zwischenzeit gelernt?

Wenn man vorher mit Java programmiert hat, dann ist Python eine geniale Programmiersprache. Gefühlt bin ich um den Faktor 2-10 produktiver und ich kann mir kaum vorstellen die gleiche Funktionalität in Java in annähernd der gleichen Zeit zu programmieren.Immer wieder entdecke ich Aspekte der Sprache, bei denen ich mich über die Schönheit und Kürze des entstandenen Codes freue – Glücksmomente die ich in Java selten hatte.

Mein Entschluss dafür zu werben, Python an Schulen zu verbreiten (und dafür auch im Abitur einzufordern) hat damit neuen Nährboden bekommen. Warum sollen sich die Schüler mit einer Programmiersprache quälen, wenn es auch so viel einfacher geht? Denn auch die Schüler sind mit Python produktiver und kommen viel schneller zu guten Ergebnissen. Als Informatiklehrer möchte ich für die Schönheit und Vielfältigkeit meines Faches werben. Die Programmiersprache ist Mittel zum Zweck um möglichst viele Anwendungsgebiete (Algorithmen, Spiele, Bildverarbeitung, Computergrafik, künstliche Intelligenz, eingebettete Systeme….) dieses Faches zeigen zu können. Je produktiver die Schüler mit der Programmiersprache programmieren können, umso mehr Räume eröffnen sich für mich als Lehrer andere Ziele zu erreichen.

Mir ist in den letzten Wochen und Monaten auf jeden Fall klar geworden, dass die Wahl der Programmiersprache entscheidenen Einfluss auf das Erreichen meiner Unterrichtsziele hat.

Für mich habe ich darüber hinaus gelernt, wo meine persönlichen Belastungsgrenze liegt… Zwar ergaben sich durch die Nutzung in 3 Kursen Synergien. Trotzdem war es enorm aufwändig ein solches Projekt neben dem Abitur und neben dem regulären Unterricht voranzutreiben. Viele Nächte habe ich nebenbei durchprogrammiert, korrigiert oder Entwürfe erstellt. Für die Schüler ergaben sich dadurch in den ersten Wochen noch einige Probleme (leider dauerte es etwas, bis die Schnittstellen tatsächlich stabil waren und in der vorherigen Woche programmierter Code sorgte in der nächsten Woche möglicherweise für Fehler). Allerdings haben sich einige Aspekte der API auch erst durch die Ziele und Wünsche der Schüler ergeben. Ich freue mich aber auf jeden Fall schon im nächsten Schuljahr in der Q2 ein Programmierprojekt mit GameGrid durchzuführen und hoffentlich in einer E02 das Projekt “Python als erste Programmiersprache” fortsetzen zu können und dann in beiden Fällen auf eine stabile 2D-Engine zurückgreifen zu können.

 

 

 

Nach dem Umstieg von JAVA auf Python habe ich recherchiert, ob es Alternativen zu BlueJ bzw. Greenfoot (bzw. Gamegrid) für Python gibt. Die schlechte Nachricht: Es gibt leider keine. BlueJ und Greenfoot sind die besten beiden Argumente für die Verwendung von JAVA als erste Programmiersprache. Der dritte Grund ist die Verbreitung. Alle anderen Argumente sprechen aber gegen JAVA. Kaum ein Programmierer würde zustimmen, dass Java durch besondere Zugänglichkeit und didaktische Reduktion besonders gut für Programmieranfänger geeignet sei. Java wirkt für viele Programmieranfänger abschreckend und wird nicht umsonst im englichsprachigen Raum zunehmend als erste Programmiersprache verdrängt.

Eine Alternative zu Greenfoot in Java Gamegrid , ein stark an Greenfoot angelehntes Framework, welches mittels Jython auch mit Python programmierbar ist. Da ich allerdings ungerne auf Jython wechseln möchte, habe ich begonnen selbst ein Framework zu schreiben, dass Gamegrid bzw. Greenfoot für JAVA ersetzen soll. Das ganze steckt noch in den Kinderschuhen (ich habe einen halben Tag Arbeit investiert), wird aber demnächst weiterentwickelt. Hier findet ihr das GIT-Repository: https://github.com/asbl/gamegridp Hier findet ihr das Projekt in Pypi: https://pypi.python.org/pypi/gamegridp/0.1 .

Ein Projekt für die Sommerferien habe ich mir auch schon ausgeguckt: Hier findet man einen Ansatz für eine Umsetzung von BlueJ auf Python. Diesen möchte ich gerne weiterentwicklen. Wenn BlueJ auch für Python existieren würde, würde es praktisch keinen Grund geben, Java als erste Programmiersprache zu verwenden.

 

Ich habe in den letzten Tagen einige Bemühungen getroffen, um meine Webseiten und Blogs auf die DSVGO anzupassen, die in 40 Tagen in Kraft tritt.

Die DSVGO regelt die Anforderungen für den Datenschutz neu. Auf der einen Seite hat die Verordnung einige positive Aspekte (z.B. werden sich auf EU-Seiten die Tracking-Buttons von Facebook & co nicht mehr auffinden lassen oder so wie auf dieser Seite nur in angepasster Form. Ähnliches gilt für Smileys, Gravatar und co… In Zukunft wird man also nicht mehr ganz so leicht auf jeder Webseite von den großen Playern getrackt.

Auf der anderen Seite sind die Hürden gerade für private Blogger enorm und unübersichtlich. Es ist schwer abzusehen, ob man alle Richtlinien eingehalten hat und es geht die Befürchtung um, dass die DSVGO die großen Player nur am Rande tangieren wird, werden die kleinen privaten Blogger zu den Opfern von Abmahnanwälten werden. Siehe dazu z.B. auch diese Seite: https://lesefreude.at/dsgvo-leifaden-fuer-blogger/

 

 

Die Lerntheke dient dem Trainieren für die erste Klausur. Sie ist sowohl Offline ausdruckbar. Dank Inspiration von Jan-Martin Klinge ist sie auch Mobil mit dem Tablet nutzbar. Auf den einzelnen Karten befinden sich dann interaktive Links zu den Hilfekarten. Die Lerntheke steht unter CC0-Lizenz, d.h. ihr könnt damit anfangen was ihr möchtet.

 

Hinweis: Da der Abschnittszoom nicht in der Online-Variante von Office funktioniert, müsst ihr die Datei herunterladen. Ich werde die Dateien noch zu einem anderen Cloud-Anbieter verschieben, damit diese ärgerliche Einschränkung nicht weiter irritiert.

Hier der Download:

 

 

Jan-Martin Klinge hat mich mit seinem Konzept der Lerntheken inspiriert. Die Idee, interaktive Lerntheken mit Powerpoint zu erstellen, die man aber auch ganz normal ausdrucken kann, finde ich richtig klasse.

Das einzige, was mich bisher gestört hat ist die Art wie in seiner Vorlage die Tippkarten eingebunden werden. Die Hilfekarten liegen dann ja auf jeder Seite und die Informationen sind dann redundant (d.h. wenn man einen Fehler macht, bedeutet dies viel Arbeit). Besser wäre es, wenn man elegant auf die entsprechende Tippkarte verlinken könnte. In Powerpoint 2016 geht dies sehr elegant mit Hilfe des Folienzooms. Auf diese Weise kann die onehin schon gute Vorlage nochmal verbesert werden.

Siehe dir dazu folgendes Video an.

Hinweise: Inzwischen habe ich festgestellt, dass der Folienzoom zwei Einschränkungen hat:

a) Er funktioniert nicht mit Office-Online. Ich werde daher die Dateien erstmal bei einem anderen Cloud-Anbieter lagern, da es irritierend ist, wenn die Präsentation im Browser geöffnet wird aber dort nicht funktioniert.

b) Man kann zwar auf eine Folie zoomen, wenn man aber wieder zurück will, funktioniert dies nur indem man explizit zurück klickt oder wischt. Wenn man ganz normal weiterklickt, dann läuft man die Folien in normaler Reihenfolge durch. Mit dem Abschnittszoom funktioniert es aber perfekt. Die erste Lerntheke (Lerntheke Python) wurde bereits mit dem Abschnittszoom erstellt. Ich werde demnächst auch ein Video hierzu erstellen.

Letzte Woche habe ich das erste mal eine Lerntheke im Design von Jan-Martin Klinge erstellt. Das Thema der Lerntheke: Flächeninhalte.

In der Lerntheke sind einige Messaufgaben enthalten, die ich extra mit Geogebra maßstabsgerecht erstellt habe. Dies geht mit Geogebra indem man die Grafik als Bild exportiert. Dann kann man den Maßstab exakt einstellen und das ganze in die Zwischenablage kopieren. Wenn man nun in Word/Powerpoint darauf achtet, daß die Skalierung 100% beträgt, kann man die Grafik maßstabsgetreu ausdrucken.

Das erste mal habe ich natürlich erstmal einen Fail eingebaut, da ich die Lerntheke im A5-Format (Zwei Seiten auf einem Blatt) ausgedruckt habe – So haben sich natürlich die Maße verändert und passten nicht mehr zu den Lösungen (Das hätte ich mir natürlich auch denken können). Also habe ich das ganze das nächste mal in A4 ausgedruckt… doch schnell machten mich zwei aufmerksamen Mädchen der sechsten Klasse auf einen Fehler aufmerksam:” Herr Siebel, 2 Kästchen sind nicht genau 1 cm groß!”. Stimmt natürlich, die Kästchen hatten eine minimale Abweichung, offenbar wurde das Bild trotzdem noch skaliert. Zu Hause war der Fehler dann schnell gefunden.

In Powerpoint wird standarmäßig ein Häckchen gesetzt vor der Option “Auf Seitenformat skalieren”. Diese Option muss deaktiviert werden, damit der Maßstab beim Drucken erhalten bleibt.

 

3. Stunde Python: Nachdem die Schüler mit Turtle-Grafik erste Erfahrungen gemacht haben und im Online-Kurs parallel die Grundlagen trainiert haben stand nun in der dritten Stunde das Thema Text-Adventures auf dem Programm.

Prinzipiell ist es mein Ziel, den “langweiligen” Teil des Programmieren-Lernens auf den Online-Kurs zu verschieben und dann im Unterricht selbst spannende Anwendungsfälle untersuchen zu können. Text-Adventures sind deshalb besonders gut geeignet, da man hier sehr gut den Umgang mit Kontrollstrukturen lernen kann (man benötigt eine Mainloop und einen Haufen verschachtelte If-Elif-Else Abfragen) und sieht, wie selbst sehr simple Programme schnell aus sehr komplexen Code bestehen (der Umgang mit Komplexität ist einer der Dinge, die die Informatik als Disziplin ausmacht).

Der Grundaufbau eines Textadventures in Python kann so aussehen:

zustand="start"
while (zustand!="ende"):
    if zustand=="start":
        print("Situationsbeschreibung")
        eingabe = input("Was tust du (f: In den Flur, a: Abhauen)")
        if eingabe=="f":
            zustand="flur"
        else:
            zustand="ende"
    elif zustand=="flur":
        print("Du betrittst den Flur")
        eingabe = input("Was tust du?")
    elif zustand=="ende":
        print("Du läufst davon...")
            


Das ganze wird natürlich schnell extrem unübersichtlich… daher enstand bei einigen Schülern von sich aus bereits der Wunsch den Code irgendwie übersichtlicher zu gestalten, was hier zum Thema Funktionen führt:

def flur():
    print("Du gehst in den Flur... oben hörst du Geräusche...")
    eingabe=input("""Was tust du?
        [r]ückwärts: Ich gehe zurück zum Haupteingang
        [o]ben: Ich gehe die Treppen hoch""")
    if eingabe=="r":
        return "haupteingang"
    if eingabe=="o":
        return "Erster Stock"

Weiterhin bietet es sich auch an Zufallsfunktionen einzuführen (um z.B. Kämpfe oder Gefahren zu simulieren). Das nächste mal werde ich daher diese Einheit mit einer Lerntheke ergänzen, auf der man die wichtigsten Funktionen nochmal nachlesen kann.

 

Interessanterweise kamen alle Schüler sehr ordentlich mit den Aufgaben zurecht. Eine Erfahrung, die ich mit Java+Guis oder Java+Greenfoot so noch nicht gemacht habe. Wenn wir über Probleme gesprochen haben, dann meist nicht über einfache Syntaxfehler, sondern über grundlegende Logik-Fehler, die von den Schülern mit etwas Hilfestellung selbst entdeckt wurden. So macht mir das Unterrichten viel mehr Spaß und ich habe das Gefühl, dass viele Schüler schneller und mehr lernen, als in meinen bisherigen Java/Lazarus Kursen.

Da freut man sich als Informatiklehrer:

“Insbesondere die erst seit diesem Schuljahr neu eingerichtete AG „Robotik“ war bei den Besuchern besonders beliebt. Dank der „Finanzspritze“ von 2000 Euro des übrigens sehr aktiven Fördervereins der CWS konnten die Bausätze für die selbst gebauten kleinen Roboter bereitgestellt werden. Die Schüler tüfteln und bauen unter Leitung von Dr. Stephan Zschiegner kleine Maschinen, programmieren sie und bringen den Robotern so erstaunliche Fähigkeiten bei, was sie nun vorführten. Aber auch in den Fachbereichen Physik oder Chemie gab es erneut erstaunliche Experimente, bei denen die jungen Besucher zum Teil auch selbst Hand anlegen durften. ” http://www.usinger-anzeiger.de/lokales/usingen/eine-attraktive-schule_18533093.htm

Tatsächlich war es am Tag der offenen Tür noch nie so voll in den Informatikräumen. Die Roboter der AG Robotik sorgten für große Begeisterung und ich freue mich mit dem Kollegen, der diese präsentieren durfte.