Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weiterentwicklung des Moduls (Master) #154

Open
cagix opened this issue Dec 26, 2023 · 1 comment
Open

Weiterentwicklung des Moduls (Master) #154

cagix opened this issue Dec 26, 2023 · 1 comment

Comments

@cagix
Copy link
Member

cagix commented Dec 26, 2023

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

@cagix
Copy link
Member Author

cagix commented Dec 26, 2023

@bcg7 Was denkst Du?

@cagix cagix pinned this issue Dec 27, 2023
@cagix cagix self-assigned this Jul 11, 2024
@cagix cagix added this to the Start Winter 2024/25 milestone Jul 11, 2024
@cagix cagix removed this from the Start Winter 2024/25 milestone Aug 21, 2024
@cagix cagix removed their assignment Oct 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant