You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Das Modul wird im Winter 2024 vor allem als neues Wahlmodul mit 10 ECTS angeboten (doppelter Umfang).
Zusätzlich werden ab dem Winter 2027 Studierende teilnehmen, die dann bereits Compilerbau als Pflichtveranstaltung im Bachelor hatten.
Aktuell gehen wir in der VL klassisch die Bausteine der Pipeline durch und betrachten pro Block jeweils ein bis mehrere Ideen/Konzepte plus die Theorie dazu. Im Praktikum erstellt die Gruppe einen Java-Compiler und eine -VM. Am Ende des Semesters halten die Studierenden noch einen Vortrag zu einem fortgeschritteneren Thema.
Das Vorgehen skaliert recht gut, i.d.R. ist ein Thema äquivalent zu einer Sitzung, man kann Themen leicht austauschen. Nachteil ist, dass man einen deutlich langen theoretischen Vorlauf braucht, bis die Studis etwas praktisch umsetzen können und dass sie erst gegen Ende des Semesters eine lauffähige Pipeline in den Händen halten - Themen wie VM und Garbage Collection kommen sogar bisher nur am Rande vor.
Im (Online-) Buch und Kurs Essentials of Compilation wird das anders gemacht: Nach einer kurzen initialen Phase (Grammatik, Parsing) wird eine einfache komplette Pipeline für Integer-Expressions aufgebaut. In der folgenden Sitzung wird diese ergänzt um Variablen, danach Funktionen, Klassen, ... Dabei werden dann die jeweils relevanten Konzepte (Semantische Analyse, Typprüfung/-inferenz, Optimierung, Registerzuweisung, Garbage Collection, ...) schrittweise in den jeweiligen Lektionen untergebracht. (Video ACM SIGPLAN / ICFP'23) (IUCompilerCourse)
Dadurch hat man jede Woche einen lauffähigen Interpreter/Compiler in der Hand und erweitert die Konzepte quer über die Compiler-Pipeline. Zusätzlich kommen hier Aspekte verschiedener Programmierparadigmen mit rein.
Das lässt sich gut mit dem Vorgehen im Kurs CS6120 an der CMU kombinieren. Hier halten die Studis zu verschiedenen fortgeschrittenen Themen einen eigenen Vortrag plus leiten die Sitzung/Diskussion und schreiben eine kurze Zusammenfassung als Blog. Mit dem Vorgehen von Essentials of Compilation könnte man so in den letzten zwei Dritteln des Semesters entsprechende ergänzende Vorträge einbauen, die so kontinuierlicher sind als die aktuellen Block-Vorträge am Semesterende.
Nach Möglichkeit würde ich gern schrittweise auch PLFA teilweise mit integrieren (theoretische Konzepte von Programmiersprachen) und EOPL und auch die Typen/Typsysteme (TPL: Benjamin Pierce). Das ist vermutlich eher perspektivisch zu sehen, wenn irgendwann Studis mit CB-Hintergrund kommen und man die Basics nicht nochmal komplett machen muss.
Ein weiterer interessanter Aspekt: Welche Sprache wollen wir parsen/interpretieren/kompilieren, und in welcher (Implementierung s-) Sprache soll es umgesetzt werden? Im Unterschied zum Bachelor-Modul sollte mehr Theorie (Grammatik, Parsing (LR/LALR), Optimierung) mit reinkommen, zusätzlich fortgeschrittenere Aspekte wie VM/Bytecode, Typ-Systeme, MLIR, ...
Das Modul wird im Winter 2024 vor allem als neues Wahlmodul mit 10 ECTS angeboten (doppelter Umfang).
Zusätzlich werden ab dem Winter 2027 Studierende teilnehmen, die dann bereits Compilerbau als Pflichtveranstaltung im Bachelor hatten.
Aktuell gehen wir in der VL klassisch die Bausteine der Pipeline durch und betrachten pro Block jeweils ein bis mehrere Ideen/Konzepte plus die Theorie dazu. Im Praktikum erstellt die Gruppe einen Java-Compiler und eine -VM. Am Ende des Semesters halten die Studierenden noch einen Vortrag zu einem fortgeschritteneren Thema.
Das Vorgehen skaliert recht gut, i.d.R. ist ein Thema äquivalent zu einer Sitzung, man kann Themen leicht austauschen. Nachteil ist, dass man einen deutlich langen theoretischen Vorlauf braucht, bis die Studis etwas praktisch umsetzen können und dass sie erst gegen Ende des Semesters eine lauffähige Pipeline in den Händen halten - Themen wie VM und Garbage Collection kommen sogar bisher nur am Rande vor.
Im (Online-) Buch und Kurs Essentials of Compilation wird das anders gemacht: Nach einer kurzen initialen Phase (Grammatik, Parsing) wird eine einfache komplette Pipeline für Integer-Expressions aufgebaut. In der folgenden Sitzung wird diese ergänzt um Variablen, danach Funktionen, Klassen, ... Dabei werden dann die jeweils relevanten Konzepte (Semantische Analyse, Typprüfung/-inferenz, Optimierung, Registerzuweisung, Garbage Collection, ...) schrittweise in den jeweiligen Lektionen untergebracht. (Video ACM SIGPLAN / ICFP'23) (IUCompilerCourse)
Dadurch hat man jede Woche einen lauffähigen Interpreter/Compiler in der Hand und erweitert die Konzepte quer über die Compiler-Pipeline. Zusätzlich kommen hier Aspekte verschiedener Programmierparadigmen mit rein.
Das lässt sich gut mit dem Vorgehen im Kurs CS6120 an der CMU kombinieren. Hier halten die Studis zu verschiedenen fortgeschrittenen Themen einen eigenen Vortrag plus leiten die Sitzung/Diskussion und schreiben eine kurze Zusammenfassung als Blog. Mit dem Vorgehen von Essentials of Compilation könnte man so in den letzten zwei Dritteln des Semesters entsprechende ergänzende Vorträge einbauen, die so kontinuierlicher sind als die aktuellen Block-Vorträge am Semesterende.
Nach Möglichkeit würde ich gern schrittweise auch PLFA teilweise mit integrieren (theoretische Konzepte von Programmiersprachen) und EOPL und auch die Typen/Typsysteme (TPL: Benjamin Pierce). Das ist vermutlich eher perspektivisch zu sehen, wenn irgendwann Studis mit CB-Hintergrund kommen und man die Basics nicht nochmal komplett machen muss.
Ein weiterer interessanter Aspekt: Welche Sprache wollen wir parsen/interpretieren/kompilieren, und in welcher (Implementierung s-) Sprache soll es umgesetzt werden? Im Unterschied zum Bachelor-Modul sollte mehr Theorie (Grammatik, Parsing (LR/LALR), Optimierung) mit reinkommen, zusätzlich fortgeschrittenere Aspekte wie VM/Bytecode, Typ-Systeme, MLIR, ...
Auch interessant: CSE 40243 - Compilers and Language Design mit Online-Buch
Siehe auch Compiler-CampusMinden/CB-Vorlesung-Bachelor#243
The text was updated successfully, but these errors were encountered: