Von einfachen Schaltungen zu einem funktionierenden Computer
Michael Anderegg
Das Ziel dieser Unterrichtseinheit, die sich an Schüler*innen im Ergänzungsfach Informatik in einem Schweizer Gymnasium richtet, ist das Ausleuchten der tiefliegenden Abstraktionsschichten der Informatik, die häufig als Black-Box verwendet werden: Wie kann ein Computer digitale Daten speichern und verarbeiten?
Um diese Frage zu beantworten, bauen die Schüler*innen selbst einen Computer! Damit die Probleme der physischen Welt ausgeklammert bleiben, arbeiten die Schüler*innen mit einer Simulationssoftware für logische Schaltungen „CircuitVerse“ https://circuitverse.org.
Die Idee zu dieser Arbeit ist in Grundzügen schon früh entstanden. Im Januar 2020 während einer der ersten Vorlesungen der GymInf-Ausbildung, „Einführung in Computersysteme“ von Ulrich Ultes-Nitsche (Université de Fribourg) haben wir in einem Logikgatter-Simulator die Funktionsweise eines FlipFlops untersucht, einen adressierten Speicher modelliert, Halb- und Volladdierer entworfen und zu einem Addierer kombiniert. Diese Aufgaben haben mir viel Spass bereitet und einen ersten Einblick in den inneren Aufbau eines Computers ermöglicht. Zu diesem Zeitpunkt habe ich mich ein erstes Mal gefragt, ob es nicht möglich wäre, einen vollständigen Computer auf diese Art zu simulieren. In der Vorlesung haben wir das Thema jedoch nicht weiter vertieft und einen Sprung auf eine höhere Abstraktionsebene gemacht, in welcher die Funktionsweise von Betriebssystemen besprochen wurde. Nach meinem Empfinden blieb zwischen den NAND-Gattern und dem Linux-Kernel eine Lücke…
Den entscheidenden Hinweis, der schliesslich zu der vorliegenden Arbeit geführt hat, habe ich im Frühling 2021 von Matthias Hauswirth (Università della Svizzera italiana) erhalten. Er hat mich auf das nand2tetris-Projekt von Simon Schocken und Noam Nisan [2], [7] aufmerksam gemacht, wofür ich ihm sehr dankbar bin! In den darauffolgenden Wochen habe ich voller Begeisterung die zwölf Projekte des nand2tetris-Kurses absolviert. Beginnend mit NAND-Gattern habe ich den Bau eines Computers in einer Hardwarebeschreibungssprache simuliert und anschliessend den Weg von einer einfachen Maschinensprache zu einer höheren Programmiersprache nachgezeichnet. Wie der Name des Kurses verrät, endet das Projekt damit, dass man das Spiel Tetris auf dem selbst gebauten Computer implementieren kann.
Damit war die Lücke geschlossen, und zwar auf eine enorm motivierende Art, die mit der grossen Befriedigung verbunden ist, einen eigenen Computer zu bauen - ganz ohne Lötkolben!
In der vorliegenden Arbeit wurden die Ideen von nand2tetris ergänzt, neu formuliert und so adaptiert, dass sie sich für den Einsatz im Rahmen des Ergänzungsfachs Informatik an einem Schweizer Gymnasium eignen.