/* Das ist der Code, damit das Akkordeon geschlossen angezeigt wird. */ /* Das ist der Code, um offene Akkordeons wieder schließen zu können */

Ob beim Scrollen durch Social Media, beim Musikhören, beim Gespräch mit Alexa, Chatten mit ChatGPT oder sogar in der Schule – Informatik durchdringt heute fast jeden Aspekt unseres Lebens. Oft nehmen wir die Technologie um uns herum als selbstverständlich wahr, ohne zu hinterfragen, was sie antreibt. Doch was passiert eigentlich hinter den Kulissen? Wie funktionieren die Geräte, Roboter und Programme, die unseren Alltag so selbstverständlich begleiten?

Um diese Frage zu beantworten, haben wir einen Einblick in das Department of Computer Science der TUM erhalten. Dort hat uns Herr Dr. Michael Petter ausführlich erklärt, wie man das Programm, welches jeder schon mal benutzt oder gesehen hat, selbst in Java programmieren kann.
Das Ziel des Tages: Excel von Grund auf selbst zu entwickeln.
Wie verwandelt man also etwas scheinbar so Komplexes (linkes Bild) in eine eigene Java-Anwendung (rechtes Bild)?

Damit Tabellenkalkulationsprogramme wie Excel Daten speichern können, brauchen sie eine geeignete Datenhaltung. Diese besteht in unserem Beispiel aus einer Datenstruktur und einem Speicherort. Da eine Tabelle lediglich eine zweidimensionale Matrix ist, ist es naheliegend, ein zweidimensionales Array für die Ein- und Auslesung von Daten zu nutzen. Die Speicherung erfolgt in einer CSV-Datei, die wie eine Textdatei funktioniert: Jeder Wert wird durch ein festgelegtes Trennzeichen separiert. Wenn etwa die Zelle B3 aufgerufen wird, wird aus der dritten Zeile der zweite Wert entnommen.
Nachdem wir auch gesehen haben, wie man zudem Referenzen implementieren könnte, ging es zum Kernstück – der Berechnung von Formeln, wie 2 * (3-8). Für diese war es zunächst wichtig, das Problem zu abstrahieren. Um eine Formel wie diese zu lösen, stellte sich ein Rechenbaum als hilfreiches Modell heraus: Er erleichtert die Codierung, indem er festlegt, welche Rechenoperationen auf welche Werte anzuwenden sind.  
Doch wie kommt man von einer Formel zu einem strukturierten Baum? Die Antwort sind reguläre Ausdrücke. Mit diesen kann man innerhalb von möglichen Eingaben Muster ausnutzen, um Daten innerhalb der Eingabe zu separieren. So lässt sich beispielsweise eine Zellenreferenz durch eine Kombination aus Buchstaben und Zahlen eindeutig identifizieren. Man kann also grammatikalische Regeln festlegen, um solche Ausdrücke zu erkennen und im Programm richtig einzuordnen. Aus diesen kann man dann eine Art Entscheidungsbaum konstruieren, welcher festlegt, um was für eine Art von Eingabe es sich handelt und wie sie in der Berechnung verwendet wird. Dadurch lassen sich auch komplexe und verschachtelte Formeln verarbeiten.
Der Vortrag bot uns nicht nur solide Einblicke in eine mögliche technische Umsetzung von Excel, sondern führte uns auch an die grundlegende Methodik der Problemlösung in der Informatik heran: die Abstraktion.

Der Nachbau von Excel diente hier als „einfaches“ Beispiel für die „Abstract Interpretation“, eines der zentralen Forschungsgebiete von Dr. Petter. Dort zeigt sich der Zweck unserer Arbeit anhand von Beispielen von weiteren seiner Forschungsgebiete.

Dr. Petter befasst sich in seinem Alltag besonders mit drei Forschungsgebieten. Im Bereich der “Interprocedural Relational Invariants” wird nach Methoden oder Algorithmen gesucht, um sicherzustellen, dass gewisse Beziehungen zwischen Variablen innerhalb von verschiedenen teilweise gleichzeitig aufeinander zugreifenden Prozessen im gewünschten Zustand bleiben. Das ist besonders nützlich, um Fehler präventiv zu erkennen, Sicherheit im Programm zu gewährleisten oder Programme zu prüfen, in denen Fehler unter anderem Menschenleben kosten würde.
Ein weiteres seiner Forschungsgebiete ist vom Konzept nicht weit davon entfernt. Die “Static Program Analysis” sucht ebenfalls nach Möglichkeiten Fehler präventiv zu vermeiden. Anders ist bei dieser jedoch, dass das Programm, ohne dass es ausgeführt wird, analysiert wird. Dadurch versucht man Prognosen über Programme treffen zu können und so systematischer und analytischer Code zu interpretieren. Besonders wichtig ist das bei der Interpretation komplexer Programme, bei welchen den Code anzustarren nicht weiterhilft.
Eine Methode hierfür ist Dr. Petters drittes Forschungsgebiet: die “Abstract Interpretation”. Wie der Name impliziert, versucht man hierbei abstrakte Programmabläufe vereinfacht darzustellen, um Code nicht nur zu verstehen, sondern auch besser analysieren zu können.
Nach dieser detailreichen Auskunft über den möglichen Aufbau von Tabellenkalkulationsprogrammen, haben wir uns einem wohlverdienten Mittagsmahl gewidmet, gefolgt von einer kurzen Feedback-Runde zum Vortrag.

Gestärkt ging es weiter mit Fakten über das populäre Informatikstudium an der TUM.
Im Wintester 23/24 sind insgesamt 15.000 Studierende an der School of Computation, Information and Technologyrseme, womit diese School der TUM mit Abstand die Meisten Studierenden hat. Angesichts des vielfältigen Studienangebots überrascht das kaum: Neben der reinen Informatik werden hier auch Games Engineering, Wirtschaftsinformatik sowie – seit der Umstrukturierung im Jahr 2022 – Mathematik, Elektrotechnik und Informationstechnik angeboten. Laut dem Times Higher Education Ranking aller Universitäten Weltweit, belegt die TUM im Bereich von Computer Science sogar den 15. Platz!

Der beste Weg, um herauszufinden, wie das Informatikstudium an der TUM tatsächlich aussieht, ist natürlich, selbst hineinzuschnuppern – und genau dazu bekamen wir gegen Ende unseres Besuchs die Chance. Wir durften an der ersten Vorlesung der Informatik-Studierenden an der TUM teilnehmen, bei der die fast 900 Sitzplätze im Hörsaal schnell gefüllt waren.

Für diesen tiefen Einblick in das Informatikstudium an der TUM bedanken wir uns herzlich beim Department of Computer Science und allen Beteiligten, die diesen Tag möglich gemacht haben. Ein besonderer Dank geht an Dr. Michael Petter.

Tim Fan und Artur Martincovschi