English Version

Das bedeutet natürlich einerseits, dass sie etwas von der Didaktik des Programmierens verstehen sollten. Andererseits ergeben sich daraus aber auch Anforderungen an die Programmiersprache und die Entwicklungsumgebung (IDE), die im Unterricht verwendet werden. Für beides gibt es nicht «die eine beste Lösung» und ich bin wie viele meiner Kolleginnen und Kollegen der Meinung, dass nicht die syntaktischen Details der verwendeten Sprache, sondern die wichtigen Konzepte des Programmierens im Vordergrund stehen sollten. Und dennoch: Im Programmierunterricht sollte programmiert werden und zumindest am Anfang sollten sowohl die Zeilen an Boilerplate-Code als auch die kognitive Belastung durch überladene IDEs minimiert werden.

Zudem kann auch die beste Lehrperson sehr schnell an ganz reale Grenzen stossen, wenn sie 25 Schülerinnen und Schülern gleichzeitig beim Debuggen ihres Codes helfen soll. Denn von den eher generischen «Syntax Errors» oder «Segmentation Faults» auf das eigentliche Problem zu schliessen, ist oftmals alles andere als einfach und vor allem sehr schnell frustrierend.

Die frühen Jahre

Mit diesem Problem beschäftigte sich um das Jahr 2012 Tobias Kohn, Mathematiklehrer an der Kantonsschule Zürcher Oberland, der im Fach «Angewandte Mathematik» zusammen mit seinem Kollegen Beat Trachsler untersuchen wollte, ob sich Python als Programmiersprache für Anfängerinnen und Anfänger besser eignen würde als das bisher verwendete Java. Zwar ist die Syntax von Python für diese viel zugänglicher und aus einem

import java.util.Scanner;
Scanner my_scanner = new Scanner(System.in);
System.out.println("Wie heisst du?");
String name = my_scanner.nextLine();
my_scanner.close();

wird ein weitaus intuitiveres

name = input("Wie heisst du?") .

Allerdings waren damit noch längst nicht alle Probleme gelöst, wie zum Beispiel die oben erwähnten Fehlermeldungen, die den Schülerinnen und Schülern wenig Hilfestellung bieten. Hinzu kam, dass gängige Python-IDEs nicht mit didaktischen Hintergrundüberlegungen entwickelt wurden und die Benutzeroberfläche die Schülerinnen und Schüler oft in vielerlei Hinsicht irritierte.

Tobias entschied sich, eine eigene IDE zu entwickeln, die besser verständliche Fehlermeldungen enthalten und eine einfache, intuitive Oberfläche besitzen sollte. Um eine möglichst unkomplizierte Bedienung zu ermöglichen, basierte seine IDE auf Jython [17], einer Python-Implementierung, die in der Java Virtual Machine läuft. Dies ermöglichte

  • die Plattformunabhängigkeit von Java zu nutzen,
  • eine GUI mit Java Swing zu erstellen und
  • bereits existierende Java-Bibliotheken zu verwenden.

Hierbei sei erwähnt, dass das «Tiger» im Namen der IDE alles andere als willkürlich gewählt wurde; ist der dunkle Tigerpython doch insbesondere auf der Insel Java anzutreffen.

TigerJython wurde Stück für Stück erweitert, verfeinert und die neuen Features wurden direkt im Klassenzimmer getestet – ein wenig «Design-Based Research» im Schweizer Schulalltag.

Etablierung in der Schule und darüber hinaus

Aber eine wichtige Zutat fehlte bis dato. Für junge Programmieranfängerinnen und -anfänger sollte das Programmieren zu Beginn wenig abstrakt und so «hands-on» wie möglich unterrichtet werden. Leider können wir CPU und GPU nicht dabei zusehen, was sie gerade tun, und der den Code ausführende Computer bleibt eine mysteriöse Blackbox. Deswegen setzen Programmiersprachen für Anfängerinnen und Anfänger oftmals auf das Prinzip eines Akteurs, der den Code ausführt.

Abbildung 1: Tobias Kohn, Jarka Arnold und Aegidius Plüss mit ETH-Rektorin Sarah Springman bei der Übergabe des MINT-Preises der Rektorin am Schweizer Tag für Informatikunterricht, 2018; © Jan Lichtensteiger.

Als Prototyp gilt die in Logo verwendete Schildkröte (die «Turtle»), die bereits Ende der sechziger Jahre eingesetzt wurde, um Kindern spielerisch das Programmieren beizubringen; heute hat sie viele Kolleginnen und Kollegen, zum Beispiel die Katze in Scratch oder den Wombat in Greenfoot. Aber für Jython existierte weder noch.

Glücklicherweise gab es aber bereits eine Turtle-Implementierung für Java – und zwar ebenfalls «made in Switzerland». Entwickelt wurde sie von Aegidius «Aegid» Plüss, damals Professor für Informatik und ihre Didaktik an der Universität Bern. Aegid1 war nicht nur gerne bereit, seine in Java geschriebene Bibliothek gturtle für die neue IDE zu portieren, sondern war derart begeistert von Tobias’ Anfrage, dass er sich Hals über Kopf in das Abenteuer TigerJython stürzte. Und so wurde der Funktionsumfang von TigerJython innerhalb weniger Wochen und Monate um eine grosse Anzahl von Modulen (die von Aegid entwickelten APLU-Bibliotheken [16]) erweitert. Dies erklärt auch den für Python ungewöhnlichen CamelCase der entsprechenden Funktionsnamen – diese waren ursprünglich Java-Methoden.

Die beiden wurden durch Jarka Arnold von der PH Bern, die zuvor schon mit Aegid zusammengearbeitet hatte, zu einem Trio komplettiert, und gemeinsam gründeten sie 2017 die TJ Group [19], die sich um die Weiterentwicklung der Software kümmerte und diverse freie Online-Tutorials rund um TigerJython zur Verfügung stellte [2, 3, 4, 5, 6]. Zu diesem Zeitpunkt war TigerJython (Version 2 wurde in Scala statt in Java geschrieben) bereits eine ausgereifte IDE mit

  • verständlicheren Fehlermeldungen für Anfängerinnen und Anfänger,
  • einem ausgereiften visuellen Debugger,
  • einer Vielzahl didaktischer Module wie der Turtle mit gturtle, Koordinatengrafik mit gpanel, objektorientierter Spieleprogrammierung mit GameGrid etc. und
  • einer breiten Unterstützung verschiedener Roboter wie dem Lego EV3, dem micro:bit/Maqueen, dem Pi2GO oder dem Calliope mini/Calli:bot.

Genauer betrachtet verwendet man den Begriff «TigerJython» mit zwei verschiedenen Bedeutungen. Denn neben einer Programmierumgebung ist TigerJython auch zu einem eigenen Python-Dialekt geworden, der beispielsweise ein repeat-Keyword für Schleifen enthält, die Funktionalität von Python-Listen erweitert oder die input()-Funktion Strings, die nur aus Ziffern bestehen, automatisch in Zahlen umwandeln lässt.

Ebenfalls 2017 promovierte Tobias bei Juraj Hromkovič an der ETH Zürich über Fehlvorstellungen im Programmierunterricht [13]. Seine Untersuchungen führte er mit dem zu diesem Zweck weiterentwickelten TigerJython durch und langsam wurde die ETH neben der TJ Group so etwas wie die zweite Heimat von TigerJython.

Ein Jahr später, 2018, veröffentlichten Juraj und Tobias für die Sekundarstufe I das Lehrmittel «Einfach Informatik: Programmieren 7-9» [12], das erste Buch aus der «Einfach Informatik»-Reihe, die mittlerweile neun Lehrwerke (und sechs Begleitbände und Handbücher) umfasst; TigerJython wurde in diesem einem grösseren Publikum vorgestellt. Ein weiterführendes Buch für die Sekundarstufe II folgte 2021 [1].

Im selben Jahr erhielten Aegid, Jarka und Tobias als Gründungsmitglieder der TJ Group den MINT-Preis der ETH-Rektorin (siehe Abbildung 1).

Neben einer soliden Fanbase in der DACH-Region fand TigerJython auch Verbreitung ausserhalb Europas. Bill Manaris vom College of Charleston nutzte die minimalistische IDE beispielsweise, um sein «Jython Music»-Projekt [14] voranzutreiben, das heute mit dem «Jython Environment for Students» einen Fork von TigerJython verwendet. Ausserdem wird TigerJython als Plugin im Weka-Projekt [10, 21] der Universität von Waikato in Neuseeland verwendet.

1 Ein Blick auf seine Webseite [16] gibt einen kleinen Einblick, was für eine Tausendsassa Aegid war, der viel zu früh Ende 2019 verstorben ist [11]. Ich selbst kannte ihn leider nur aus wenigen E-Mails, in denen er uns unvergleichbar freundlich und kompetent bei Problemen mit TigerJython weitergeholfen hat.

WebTigerJython

Doch nicht alles verlief reibungslos. Viele Schweizer Schulen setzten vermehrt auf den Einsatz von portablen Geräten wie Tablets, die für den Einsatz von TigerJython ungeeignet waren. Zudem wurden vermehrt «bring your own device»-Strategien umgesetzt, so dass es nicht mehr ausreichte, die IDE auf allen Rechnern im schuleigenen Computerraum zu installieren. Der Aufwand, mit TigerJython zu arbeiten, wurde dadurch für einige Lehrpersonen immer grösser.

Als Reaktion darauf wurde 2018 eine webbasierte Version von TigerJython veröffentlicht, die konsequenterweise das Präfix «Web» erhielt. WebTigerJython wurde von Nicole Roth (geb. Trachsler) im Rahmen einer von Tobias betreuten Masterarbeit an der ETH [20] entwickelt und verfügt über einen beachtlichen Funktionsumfang, beispielsweise (teilweise im Umfang leicht reduzierte) Versionen der Module gturtle und gpanel.

Mit dem Vormarsch von JavaScript wurde die Webversion zu einer echten Alternative, die sich in Klassenzimmern grosser Beliebtheit erfreute, da keine Installation oder Konfiguration mehr nötig war – nur ein moderner Browser und stabiles Internet.

WebTigerPython

TigerJython und WebTigerJython verband jedoch leider, dass sie jeweils auf Technologien setzten, deren jeweilige Weiterentwicklung nur langsam vorankam – TigerJython auf Jython und WebTigerJython auf Skulpt, welches den Python-Code in JavaScript-Code übersetzte. Insbesondere hiess dies, dass beide Plattformen Python 2 verwendeten, welches so langsam Richtung Sonnenuntergang ritt und schliesslich ab Januar 2020 nicht mehr weiterentwickelt wurde [18].

Es gab aber auch Unterschiede und somit keine klar zu bevorzugende Variante: TigerJython hatte dank der APLU-Module immer noch einen grösseren Funktionsumfang, insbesondere was Spieleprogrammierung, «Physical Computing» und «Educational Robotics» betraf. Andererseits war die Benutzung der Desktop-Version für manche Schulen umständlicher und die Darstellung der Java Swing GUI auf hochauflösenden Monitoren oftmals unschön.

Mein persönliches aktives Engagement begann damit, dass wir in meiner Arbeitsgruppe ausloten wollten, inwieweit sich die beiden Feature-Sets von TigerJython und WebTigerJython vereinen liessen. Konkret wollten wir herausfinden, ob es möglich wäre, eine neue Web-Version zu erstellen, die

  1. Python 3 verwendet,
  2. möglichst viele APLU-Bibliotheken unterstützt,
  3. besser auf portablen Geräten läuft und
  4. «Physical Computing» erlaubt.

Zusammen mit Tobias und Cédric Donner (Mathematik-, Physik- und Informatiklehrer am Collège du Sud in Bulle) haben meine Doktorandin Alexandra Maximova und ich untersucht, ob es realistische Möglichkeiten gäbe.

Abbildung 2: Tobias Kohn, Cédric Donner, Andre Macejko, Daniel Barot, Jarka Arnold, Clemens Bachmann, Angélica Herrera, Jacqueline Staub, Zaheer Chotia, Tobias Antensteiner, Alexandra Maximova, Andreas Steingötter und Dennis Komm an der «Second Annual Convention on TigerJython and Friends», 2023; © Dennis Komm.

Am Ende entschieden wir uns, gemeinsam mit Clemens Bachmann, der die Umsetzung im Rahmen seiner 2023 abgeschlossenen Masterarbeit [7] übernehmen würde, für das sehr aktiv weiterentwickelte Pyodide [15], einen Port von CPython in WebAssembly. Der Fokus der ersten Version von «WebTigerJython 3» war auf «Physical Computing» und «Educational Robotics». Ich war beeindruckt, wie schnell Clemens uns einen Prototypen präsentierte, mit dem er einen Maqueen-Roboter per WebUSB von seinem Smartphone aus zum Fahren brachte.

Da hinter Pyodide ein viel grösseres Team von Entwicklerinnen und Entwicklern steckt als bei dem zuvor verwendeten Skulpt (und Jython), konnten wir ohne Probleme diverse CPython-Module verwenden – allen voran das beliebte numpy. Clemens hat ausserdem eine Oberfläche erstellt, die es ermöglicht, in Matplotlib erstellte Grafiken direkt im Browser darzustellen.

Das Design ist ausserdem besser für den Gebrauch auf portablen Geräten ausgelegt und die neue webbasierte IDE lässt sich gut auf allem verwenden, was einen ausreichend grossen Bildschirm und eine Tastatur besitzt. Dies auch dank Daniel Barot, dem ersten (aber sicher nicht letzten) IMS-Praktikanten in meiner Gruppe.

Unterstützt der verwendete Browser zudem WebUSB (was im Wesentlichen bedeutet, dass er auf Chromium basiert), kann ein angeschlossener Einplatinencomputer (wie der micro:bit oder Calliope mini) oder Roboter per Mausklick «geflasht» werden. Falls nicht, kann die entsprechende Hex-Datei heruntergeladen und manuell übertragen werden.

Aber ein Problem gab es, denn Java wurde somit vollständig aus der Gleichung genommen, weswegen wir uns auch entschieden, die neue Version auf WebTigerPython umzutaufen.2 Das bedeutete aber leider, dass wir die APLU-Module nicht einfach verwenden konnten. Im Rahmen zweier Bachelorarbeiten wurde von Julia Bogdan [8] mit Hilfe von Clemens und Daniel eine neue Version der Turtle (in einem Modul gturtle mit CamelCase-Funktionsnamen) erstellt und von Mark Csurgay [9] die Möglichkeit, Koordinatengrafik zu verwenden (folgerichtig in einem Modul gpanel).

Was hier ein ETH-Absolvent mit 40 Stellenprozenten, eine Doktorandin, die noch eine ganze Menge anderer Dinge zu tun hat, ein IMS-Praktikant und eine kleine Zahl motivierter Studierender umsetzen, ist schlichtweg phänomenal. Normalerweise würde man ein Team von mindestens fünf Vollzeit-Softwareentwicklerinnen und -entwicklern erwarten.

2 Wie oben erwähnt, ist durch die Heimat des Tigerpythons die Geschichte der Plattform dennoch in ihrem Namen präsent.

Quo Vadis, TigerJython?

Mit der Berufung von Tobias zum ordentlichen Professor am Karlsruher Institut für Technologie hat WebTigerPython eine weitere Heimat gefunden und unsere beiden Gruppen arbeiten mit Hochdruck daran, die IDE sicher für die Zukunft zu machen.

Einmal im Jahr treffen sich Mitglieder der TJ Group und unserer Arbeitsgruppen, Jacqueline Staub (Erfinderin von XLogoOnline) und andere zur TigerJyCon, der «Annual Convention on TigerJython and Friends» auf der Bodensee-Insel Reichenau, um strategische Entscheidungen zu treffen und auszuloten, wohin die Reise gehen soll (siehe Abbildung 2).

Die aktuelle Version von WebTigerPython hat noch einige Baustellen, beispielsweise fehlen Funktionen aus den APLU-Bibliotheken oder die Möglichkeit, mehrere Dateien zu verwalten.

Aber das Team wächst mit seinen Aufgaben – und die Anzahl der Nutzerinnen und Nutzer mit der Zeit.

Literatur

  1. Jarka Arnold, Cédric Donner, Urs Hauser, Matthias Hauswirth, Juraj Hromkovič, Tobias Kohn, Dennis Komm, David Maletinsky und Nicole Roth. Informatik: Programmieren und Robotik. Klett, 2021.
  2. Jarka Arnold, Tobias Kohn und Aegidius Plüss. Programmierkonzepte mit Python und der Lernumgebung TigerJython. https://programmierkonzepte.ch, zuletzt abgerufen am 17. September 2024.
  3. Jarka Arnold und Aegidius Plüss. Grafik, Robotik, Datenbanken und Spielprogrammierung mit TigerJython. https://www.jython.ch, zuletzt abgerufen am 17. September 2024.
  4. Jarka Arnold und Aegidius Plüss. Python exemplarisch. https://www.python-exemplarisch.ch, zuletzt abgerufen am 17. September 2024.
  5. Jarka Arnold und Aegidius Plüss. Python-Online: Turtlegrafik, GPanel und Robotik mit WebTigerPython. https://www.python-online.ch, zuletzt abgerufen am 17. September 2024.
  6. Jarka Arnold und Aegidius Plüss. TigerJython4Kids: Turtlegrafik, Robotik und Datenbankanwendungen. https://tigerjython4kids.ch, zuletzt abgerufen am 17. September 2024.
  7. Clemens Bachmann. WebTigerJython 3: A Web-Based Python IDE Supporting Educational Robotics. Masterarbeit, ETH Zürich, 2023.
  8. Julia Bogdan. Turtle Graphics for WebTigerJython-3. Bachelorarbeit, ETH Zürich, 2023.
  9. Mark Csurgay. Implementing GPanel: A Coordinate Graphics Library for WebTigerPython. Bachelorarbeit, ETH Zürich, 2024.
  10. Eibe Frank, Mark A. Hall und Ian H. Witten. The WEKA Workbench. Online-Appendix von Data Mining: Practical Machine Learning Tools and Techniques, Morgan Kaufmann, Fourth Edition, 2016.
  11. Hans Kammer. Im Gedenken an Aegidius Plüss. Bulletin des «Verein Schweizerischer Mathematik- und Physiklehrkräfte» 142:23, 2020.
  12. Juraj Hromkovič und Tobias Kohn. Einfach Informatik: Programmieren 7-9. Klett, 2018.
  13. Tobias Kohn. Teaching Python Programming to Novices: Addressing Misconceptions and Creating a Development Environment. Dissertation 24074, ETH Zürich, 2017.
  14. Bill Manaris. JythonMusic: Creative Programming in Python. https://jythonmusic.me, zuletzt abgerufen am 17. September 2024.
  15. Pyodide Contributors and Mozilla. Pyodide. https://pyodide.org, zuletzt abgerufen am 17. September 2024.
  16. Aegidius Plüss. APLU Home. https://aplu.ch, zuletzt abgerufen am 17. September 2024.
  17. Python Software Foundation. Jython. https://jython.org, zuletzt abgerufen am 17. September 2024.
  18. Python Software Foundation. Sunsetting Python 2. https://www.python.org/doc/sunset-python-2, zuletzt abgerufen am 17. September 2024.
  19. TigerJython Group. https://tjgroup.ch, zuletzt abgerufen am 17. September 2024.
  20. Nicole Trachsler. WebTigerJython: A Browser-based Programming IDE for Education. Masterarbeit, ETH Zürich, 2018.
  21. Wikipedia Contributors. Weka. https://de.wikipedia.org/wiki/Waikato_Environment_for_Knowledge_Analysis, zuletzt abgerufen am 17. September 2024.