Deutsche Version

On the one hand, this means that they should have an understanding of the didactics of programming. On the other hand, this also results in requirements for the programming language and the development environment (IDE) used in the classroom. There is no “one best solution” for either, and – like many of my colleagues – I am of the opinion that the focus should not be on the syntactic details of the language used, but on the important concepts of programming. And yet: programming lessons should contain programming, and – at least at the beginning – both the lines of boilerplate code and the cognitive load caused by overloaded IDEs should be minimized.

In addition, even the best teacher can very quickly face very real limits if they have to help 25 students debug their code at the same time. Because deducing the actual problem from the rather generic “syntax errors” or “segmentation faults” is often anything but easy, and above all very quickly frustrating.

The Early Years

Around 2012, Tobias Kohn, a math teacher at the Kantonsschule Zürcher Oberland, together with his colleague Beat Trachsler wanted to investigate whether Python would be better suited as a programming language for novices than Java, which had previously been used, in the subject “Applied Mathematics.” And indeed, Python’s syntax is much more accessible for beginners, and an

import java.util.Scanner;
Scanner my_scanner = new Scanner(System.in);
System.out.println("What is your name?");
String name = my_scanner.nextLine();
my_scanner.close();

becomes a far more intuitive

name = input("What is your name?") .

However, this did not solve all the problems, such as the error messages mentioned above, which offer little help to the students. In addition, common Python IDEs were not developed with didactic considerations in mind, and the user interface often irritated the students in many ways.

Tobias decided to develop his own IDE, which should contain more comprehensible error messages and have a simple, intuitive interface. To make it as easy to use as possible, his IDE was based on Jython [17], a Python implementation that runs in the Java Virtual Machine. This made it possible to

  • utilize the platform independence of Java,
  • create a GUI with Java Swing, and
  • use existing Java libraries.

It should be mentioned here that the “tiger” in the name of the IDE was anything but arbitrarily chosen; indeed, the dark tiger python is found in particular on the island of Java.

TigerJython was expanded and refined bit by bit, and the new features were tested directly in the classroom – a little bit of “design-based research” in everyday Swiss school life.

Establishment at School and Beyond

But one important ingredient was missing until now. For young novice programmers, programming should be taught in a less abstract and as “hands-on” way as possible at the beginning. Unfortunately, we cannot watch the CPU and GPU doing what they are doing, and the computer executing the code remains a mysterious black box. This is why programming languages for beginners often rely on the principle of an actor executing the code.

Figure 1: Tobias Kohn, Jarka Arnold, and Aegidius Plüss with ETH Rector Sarah Springman at the presentation of the Rector’s STEM Prize on the Swiss Day for Computer Science Education, 2018; © Jan Lichtensteiger.

The prototype is the Turtle used in Logo, which was used back in the late 1960s to teach children programming in a playful way; today it has many colleagues, for example the cat in Scratch or the wombat in Greenfoot. But neither existed for Jython.

Fortunately, however, there was already a Turtle implementation for Java – also “made in Switzerland.” It was developed by Aegidius “Aegid” Plüss, then Professor of Computer Science and its Didactics at the University of Bern. Aegid1 was not only happy to port his gturtle library, written in Java, for the new IDE, but was so enthusiastic about Tobias’ request that he threw himself headlong into the TigerJython adventure. And so, within a few weeks and months, the functional scope of TigerJython was extended by a large number of modules (the APLU libraries developed by Aegid [16]). This also explains the CamelCase in the corresponding function names, which is unusual for Python – these were originally Java methods.

The two were joined as a trio by Jarka Arnold from PH Bern, who had previously worked with Aegid, and together they founded the TJ Group [19] in 2017, which took care of the further development of the software and provided various free TigerJython online tutorials [2, 3, 4, 5, 6]. At this time, TigerJython (version 2 was written in Scala instead of Java) was already a mature IDE with

  • more comprehensible error messages for novices,
  • a sophisticated visual debugger,
  • a variety of didactic modules such as the Turtle with gturtle, coordinate graphics with gpanel, object-oriented game programming with GameGrid etc., and
  • broad support for various robots such as the Lego EV3, the micro:bit/Maqueen, the Pi2GO, or the Calliope mini/Calli:bot.

More precisely, the term “TigerJython” is used with two different meanings. In addition to a programming environment, TigerJython has also become a Python dialect in its own right, which for example contains a repeat keyword for loops, extends the functionality of Python lists, or allows the input() function to automatically convert strings consisting of digits only into numbers.

Also in 2017, Tobias completed his doctorate under Juraj Hromkovič at ETH Zurich on misconceptions in programming lessons [13]. He carried out his research using TigerJython, which was further developed for this purpose, and ETH slowly became something of a second home for TigerJython alongside the TJ Group.

A year later, in 2018, Juraj and Tobias published the schoolbook “Einfach Informatik: Programmieren 7-9” [12] for lower secondary level, the first book in the “Einfach Informatik” series, which now comprises nine textbooks (and six accompanying volumes and manuals); TigerJython was introduced to a wider audience in this book. A book for upper secondary level followed in 2021 [1].

In the same year, Aegid, Jarka, and Tobias, as founding members of the TJ Group, received the ETH Rector’s MINT Prize (see Figure 1).

In addition to a solid fanbase in the DACH region, TigerJython also spread outside of Europe. Bill Manaris from the College of Charleston, for example, used the minimalist IDE to promote his “Jython Music” project [14], which today uses a fork of TigerJython with the “Jython Environment for Students.” TigerJython is also used as a plugin in the Weka project [10, 21] of the University of Waikato in New Zealand.

1 A look at his website [16] gives a small insight into what a jack-of-all-trades Aegid was, who passed away far too early at the end of 2019 [11]. Unfortunately, I only knew him from a few emails in which he helped us with problems with TigerJython in an incomparably friendly and competent manner.

WebTigerJython

But not everything went smoothly. Many Swiss schools increasingly relied on the use of portable devices such as tablets, which were unsuitable for the use of TigerJython. In addition, “bring your own device” strategies were increasingly being implemented, meaning that it was no longer sufficient to install the IDE on all computers in the school’s own computer room. As a result, the effort required to work with TigerJython increased for some teachers.

In response to this, a web-based version of TigerJython was released in 2018, which was consequently given the prefix “Web.” WebTigerJython was developed by Nicole Roth (née Trachsler) as part of her Master’s thesis supervised by Tobias at ETH [20] and has a considerable range of functionality, such as versions of the gturtle and gpanel modules (some of which are slightly reduced in scope).

With the advance of JavaScript, the web version became a real alternative that enjoyed great popularity in classrooms, as no installation or configuration was required – just a modern browser and stable internet.

WebTigerPython

Unfortunately, however, TigerJython and WebTigerJython suffered from the same problem, namely they both relied on technologies whose further development was rather slow or even uncertain – TigerJython on Jython and WebTigerJython on Skulpt, which translated the Python code into JavaScript code. In particular, this meant that both platforms used Python 2, which slowly rode off into the sunset and was finally discontinued in January 2020 [18].

However, there were also differences and therefore no clearly preferable variant: TigerJython still had a greater range of functionality thanks to the APLU modules, particularly in terms of game programming, physical computing, and educational robotics. Conversely, using the desktop version was more cumbersome for some schools, and the display of the Java Swing GUI on high-resolution screens was often unattractive.

My personal active involvement began with exploring with my working group to what the extent the two feature sets of TigerJython and WebTigerJython could be combined. Specifically, we wanted to find out whether it would be possible to create a new web version that

  1. uses Python 3,
  2. supports as many APLU libraries as possible,
  3. runs better on portable devices, and
  4. allows physical computing.

Together with Tobias and Cédric Donner (math, physics, and computer science teacher at the Collège du Sud in Bulle), my doctoral student Alexandra Maximova and I investigated whether there were any realistic possibilities.

Figure 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, and Dennis Komm at the “Second Annual Convention on TigerJython and Friends,” 2023; © Dennis Komm.

In the end, together with Clemens Bachmann, who would take over the implementation as part of his Master’s thesis [7] completed in 2023, we opted for the very actively developed Pyodide [15], a port of CPython in WebAssembly. The focus of the first version of “WebTigerJython 3” was on physical computing and educational robotics. I was impressed by how quickly Clemens presented us with a prototype with which he made a Maqueen robot drive via WebUSB from his smartphone.

Since there is a much larger team of developers behind Pyodide than behind the previously used Skulpt (and Jython), we were able to use various CPython modules without any problems – first and foremost the popular numpy. Clemens has also created an interface that makes it possible to display plots created in Matplotlib directly in the browser.

The design is also better suited for use on portable devices and the new web-based IDE is easy to use on anything with a sufficiently large screen and keyboard. This is also thanks to Daniel Barot, the first (but certainly not the last) IMS intern in my group.

If the browser used also supports WebUSB (which essentially means that it is based on Chromium), a connected single-board computer (such as the micro:bit or Calliope mini) or robot can be “flashed” at the click of a mouse button. If not, the corresponding hex file can be downloaded and transferred manually.

But there was a problem, because now Java was completely taken out of the equation, which is why we decided to rename the new version to WebTigerPython.2 Unfortunately, this meant that we could not simply use the APLU modules. As part of two bachelor theses, Julia Bogdan [8], with the help of Clemens and Daniel, created a new version of the Turtle (in a module gturtle with CamelCase function names), and Mark Csurgay [9] created the option of using coordinate graphics (logically in a module gpanel).

What an ETH graduate with a 40 percent position, a doctoral student who has a whole host of other things to do, an IMS intern, and a small number of motivated students are achieving here is simply phenomenal. You would expect a team of at least five full-time software developers.

2 As mentioned above, the history of the platform is nevertheless present in its name due to the home of the tiger python.

Quo Vadis, TigerJython?

With the appointment of Tobias as full professor at the Karlsruhe Institute of Technology, WebTigerPython has found another home, and our two groups are working hard to make the IDE ready for the future.

Once a year, members of the TJ Group and our working groups, Jacqueline Staub (creator of XLogoOnline), and others meet at the TigerJyCon, the “Annual Convention on TigerJython and Friends” on the island of Reichenau on Lake Constance, to make strategic decisions and explore where the journey should take us (see Figure 2).

The current version of WebTigerPython still has a few issues, such as missing functions from the APLU libraries or the ability to manage multiple files.

But the team grows with its tasks – and the number of users grows over time.

References

  1. Jarka Arnold, Cédric Donner, Urs Hauser, Matthias Hauswirth, Juraj Hromkovič, Tobias Kohn, Dennis Komm, David Maletinsky, and Nicole Roth. Informatik: Programmieren und Robotik. Klett, 2021.
  2. Jarka Arnold, Tobias Kohn, and Aegidius Plüss. Programmierkonzepte mit Python und der Lernumgebung TigerJython. https://programmierkonzepte.ch, last accessed September 17, 2024.
  3. Jarka Arnold and Aegidius Plüss. Grafik, Robotik, Datenbanken und Spielprogrammierung mit TigerJython. https://www.jython.ch, last accessed September 17, 2024.
  4. Jarka Arnold and Aegidius Plüss. Python exemplarisch. https://www.python-exemplarisch.ch, last accessed September 17, 2024.
  5. Jarka Arnold and Aegidius Plüss. Python-Online: Turtlegrafik, GPanel und Robotik mit WebTigerPython. https://www.python-online.ch, last accessed September 17, 2024.
  6. Jarka Arnold and Aegidius Plüss. TigerJython4Kids: Turtlegrafik, Robotik und Datenbankanwendungen. https://tigerjython4kids.ch, last accessed September 17, 2024.
  7. Clemens Bachmann. WebTigerJython 3: A Web-Based Python IDE Supporting Educational Robotics. Master’s Thesis, 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. Bachelor Thesis, ETH Zürich, 2024.
  10. Eibe Frank, Mark A. Hall, and 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č and 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, last accessed September 17, 2024.
  15. Pyodide Contributors and Mozilla. Pyodide. https://pyodide.org, last accessed September 17, 2024.
  16. Aegidius Plüss. APLU Home. https://aplu.ch, last accessed September 17, 2024.
  17. Python Software Foundation. Jython. https://jython.org, last accessed September 17, 2024.
  18. Python Software Foundation. Sunsetting Python 2. https://www.python.org/doc/sunset-python-2, last accessed September 17, 2024.
  19. TigerJython Group. https://tjgroup.ch, last accessed September 17, 2024.
  20. Nicole Trachsler. WebTigerJython: A Browser-based Programming IDE for Education. Master’s Thesis, ETH Zürich, 2018.
  21. Wikipedia Contributors. Weka. https://de.wikipedia.org/wiki/Waikato_Environment_for_Knowledge_Analysis, last accessed September 17, 2024.