Inhalt

In der Übung beschäftigen wir uns mit dem — soweit bekannt — ersten deutschsprachigen Gedicht, das von einem Computer erzeugt wurde: Die sog. stochastischen Texte von Theo Lutz, die 1957 publiziert wurden. Von diesen Texten ist sowohl der Erstdruck, der aus dem Fernschreiber kam erhalten, als auch der Programmcode, um das Gedicht zu generieren. Der Code wurde geschrieben um auf einer Zuse Z22 zu laufen, und ist im sog. Freiburger Code geschrieben — eine Art früher Programmiersprache.
Ziel des Seminars ist es, ein Reenactment dieses Codes durchzuführen. Dazu schreiben wir einen Z22-Simulator in Python, der dieses Code wieder ausführt.
Anhand dieses Szenarios beschäftigen wir uns

  • mit den Grundsätzen früher Rechnerarchitekturen, von denen viele heute noch gelten,
  • mit Strategien und Methoden gemeinsam ein komplexes Softwaresystem zu entwickeln,
  • mit modernen Systemen zur Textgenerierung, die in den letzten Jahren viel Wind gemacht haben, und
  • mit echtem und falschem Zufall.

Voraussetzungen

Grundkenntnisse in einer Programmiersprache. Im Kurs werden wir Python verwenden, und die wichtigsten Python-spezifischen Dinge werden im Kurs erläutert. Zur Auffrischung oder zum Einstieg in Python kann ich https://automatetheboringstuff.com/ empfehlen.

Termine

  • 05.04.2022: Einführung, Ablauf des Kurses, Organisatorisches (Folien)
  • 12.04.2022: Wie funktioniert(e) eine Zuse Z22? (Folien)
  • 19.04.2022: Wie funktioniert(e) das Programm von Lutz? (Folien)
    • Achtung: In der Sitzung haben wir festgestellt, dass das Übungsprogramm (Folien 3-5) nicht wie angegeben, die durch vier teilbaren Zahlen addiert. Um das tatsächlich zu tun, müsste geprüft werden, ob die hinteren beiden Binärstellen 00 sind. Eine neue Unterfunktion, die das leistet, könnte so aussehen (ab Zelle 3019): U6 CI3 PPQQE3024 B0 E5 B6 E5. Damit würden alle Stellen bis auf die unteren beiden abgeschnitten (CI3) und dann geprüft ob der Akkumulator 0 enthält (PPQQ). Wenn ja springen wir zwei Zellen weiter (E3024), holen den Wert wieder aus Schnellspeicher 6 (B6) und geben ihn zurück an den aufrufenden Kontext (E5). Wenn nein, holen wir 0 in den Akkumulator und geben das zurück (B0 E5).
  • 26.04.2022: Definition von Teilprojekten und Gruppen (Folien)
  • 03.05.2022: Kurzbericht zu jedem Teilprojekt; Definition von Schnittstellen; Module, Bibliotheken und Code-Dokumentation in Python (Folien, Tafelbild)
  • 10.05.2022: Kurzbericht zu jedem Teilprojekt; Unit-Testing (Folien)
  • 17.05.2022: Kurzbericht zu jedem Teilprojekt; Was ist Zufall? Generatoren für Pseudozufall und echten Zufall (Folien)
  • 24.05.2022: Kurzbericht zu jedem Teilprojekt
  • 31.05.2022: Kurzbericht zu jedem Teilprojekt
  • 07.06.2022 -- entfällt (Pfingstferien)
  • 14.06.2022: Kurzbericht zu jedem Teilprojekt
  • 21.06.2022 -- entfällt
  • 28.06.2022: Kurzbericht zu jedem Teilprojekt; Klassische Sprachmodelle
  • 05.07.2022: Kurzbericht zu jedem Teilprojekt; Große moderne Sprachmodelle
  • 12.07.2022: Re-Enactment!

Veranstaltungsmaterialien

Ilias | GitHub