IFM 3.1 (PO23) / IFM 5.21 (PO18): Compilerbau (Winter 2024/25)
Kursbeschreibung
Der Compiler ist das wichtigste Werkzeug in der Informatik. In der Königsdisziplin der Informatik schließt sich der Kreis, hier kommen die unterschiedlichen Algorithmen und Datenstrukturen und Programmiersprachenkonzepte zur Anwendung.
In diesem Modul geht es um ein grundlegendes Verständnis für die wichtigsten Konzepte im Compilerbau. Wir schauen uns dazu relevante aktuelle Tools und Frameworks an und setzen diese bei der Erstellung eines kleinen Compiler-Frontends für C++ ein.
Überblick Modulinhalte
- Lexikalische Analyse: Scanner/Lexer
- Reguläre Sprachen
- Generierung mit ANTLR
- Syntaxanalyse: Parser
- Kontextfreie Grammatiken (CFG)
- LL-Parser (Top-Down-Parser)
- Generierung mit ANTLR
- Semantische Analyse: Attributierte Grammatiken und Symboltabellen
- Namen und Scopes
- Typen, Klassen, Polymorphie
- Zwischencode: Intermediate Representation (IR), LLVM-IR
- Backend:
- LLVM
- Interpreter: AST-Traversierung
- C++ als zu verarbeitende Programmiersprache
Team
- BC George
- Carsten Gips (Sprechstunde nach Vereinbarung)
Kursformat
Vorlesung (2 SWS) | Praktikum (2 SWS) |
---|---|
Mi, 08:00 - 09:30 Uhr (online) | S3, G1: Di, 11:30 - 13:00 Uhr (online/Präsenz J101) |
(Carsten: Flipped Classroom, BC: Vorlesung) | S3, G2: Fr, 14:00 - 15:30 Uhr (online/Präsenz J101) |
S3, G3: Mo, 09:15 - 10:45 Uhr (online/Präsenz J101) | |
(Carsten: online, BC: Präsenz) |
Online-Sitzungen per Zoom (Zugangsdaten siehe ILIAS IFM 3.1 CB (PO23, 3. Semester)). Sie können hierzu den Raum J101 (siehe Stundenplan) nutzen.
Vorlesung (2 SWS) | Praktikum (2 SWS) |
---|---|
Mi, 08:00 - 09:30 Uhr (online) | S5, G1: Mi, 09:45 - 11:15 Uhr (online) |
(Carsten: Flipped Classroom, BC: Vorlesung) | S5, G2: Mi, 09:45 - 11:15 Uhr (online) |
S5, G3: Mi, 09:45 - 11:15 Uhr (online) | |
(Carsten: online, BC: online) |
Online-Sitzungen per Zoom (Zugangsdaten siehe IFM 5.21 CB (PO18, 5. Semester)). Sie können hierzu den Raum J101 (siehe Stundenplan) nutzen.
Fahrplan
Hier finden Sie einen abonnierbaren Google Kalender IFM 3.1 CB (PO23, 3. Semester) mit allen Terminen der Veranstaltung zum Einbinden in Ihre Kalender-App.
Abgabe der Übungsblätter jeweils Montag bis 09:00 Uhr im ILIAS. Vorstellung der Lösung im jeweiligen Praktikum in der Abgabewoche.
Monat | Woche | Vorlesung | Lead | Abgabe Aufgabenblatt | Vorstellung Praktikum |
---|---|---|---|---|---|
Oktober | 41 | 09.: Orga (Zoom); Überblick, Sprachen, Anwendungen | Carsten, BC | ||
42 | 16.: Reguläre Sprachen | BC | |||
43 | 23.: CFG | BC | 21.: B01 Reguläre Sprachen | 21. / 22. / 25. (BC, Präsenz) | |
44 | 29.: 18:00 - 19:30 Uhr (online): Edmonton I: ANTLR + Live-Coding | Edmonton | |||
44 | 30.: Lexer mit ANTLR, Parser mit ANTLR | Carsten | |||
November | 45 | 06.: Dienstbesprechung | 04.: B02 CFG | ||
46 | 13.: Überblick Symboltabellen, Symboltabellen: Scopes, Symboltabellen: Funktionen, Symboltabellen: Klassen | Carsten | 11.: B03 ANTLR | 11. / 12. / 15. (Carsten, online) | |
47 | 20.: A-L: 09:45 - 10:30 Uhr, M-Z: 10:45 - 11:30 Uhr (B40): Parcoursprüfung: Station 1 ILIAS (Grammar, Lexing, Parsing), siehe Ankündigung | 18.: B04 Semantische Analyse | 18. / 19. / 22. (Carsten, online) | ||
48 | 26.: 18:00 - 19:30 Uhr (online): Edmonton II: Vorträge Mindener Projekte | Minden | |||
48 | 27.: Überblick Zwischencode, Überblick Backend (LLVM) | BC, Carsten | |||
Dezember | 49 | 03.: 18:00 - 19:30 Uhr (online): Edmonton III: Vorträge Edmontoner Projekte | Edmonton | ||
49 | 04.: AST-basierte Interpreter 1, AST-basierte Interpreter 2 | Carsten | |||
50 | 11.: C++ I: Basics, Pointer & Referenzen, Klassen, Big 3 | Carsten | 09.: B05 Interpreter | 09. / 10. / 13. (Carsten, online) | |
51 | 18.: |
||||
52 | 25.: Weihnachtspause | ||||
Januar | 01 | 01.: Weihnachtspause | |||
02 | 08.: Sprechstunde/Freies Arbeiten | Carsten | 06.: B06 C++ | 06. / 07. / 10. (Carsten, online) | |
03 | 15.: Freies Arbeiten/Puffer | ||||
04 | 22.: Parcoursprüfung: Station 2 B07 (VL- und Praktika-Slots, siehe Ankündigung) | Carsten, BC | 20.: B07 Mini-Projekt | 20. / 21. / 24. (15:00-16:30) (Carsten/BC, online) | |
(Prüfungsphase I) | 05 | 30.: Feedback-Gespräche (15:30 - 18:00 Uhr, online) | |||
(Prüfungsphase II) | Parcoursprüfung: Do, 27. Mar 2025, 08-18 Uhr, mdl. Prüfung (alle Themen) (je Prüfung ca. 45', Vergabe ca. 2 Wochen vorher) |
Hier finden Sie einen abonnierbaren Google Kalender IFM 5.21 CB (PO18, 5. Semester) mit allen Terminen der Veranstaltung zum Einbinden in Ihre Kalender-App.
Abgabe der Übungsblätter jeweils Mittwoch bis 09:00 Uhr im ILIAS. Vorstellung der Lösung im jeweiligen Praktikum in der Abgabewoche.
Monat | Tag | Vorlesung | Lead | Abgabe Aufgabenblatt & Vorstellung Praktikum |
---|---|---|---|---|
Oktober | 09. | Orga (Zoom); Überblick, Sprachen, Anwendungen | Carsten, BC | |
16. | Reguläre Sprachen | BC | ||
23. | CFG | BC | ||
29. | 18:00 - 19:30 Uhr (online): Edmonton I: ANTLR + Live-Coding | Edmonton | ||
30. | Lexer mit ANTLR, Parser mit ANTLR | Carsten | 16:00 Uhr: B01 Reguläre Sprachen (BC, online) | |
November | 06. | Dienstbesprechung | B02 CFG (BC, online) | |
13. | Überblick Symboltabellen, Symboltabellen: Scopes, Symboltabellen: Funktionen, Symboltabellen: Klassen | Carsten | B03 ANTLR (Carsten, online) | |
20. | ||||
26. | 18:00 - 19:30 Uhr (online): Edmonton II: Vorträge Mindener Projekte | Minden (S5) | ||
27. | Überblick Zwischencode, Überblick Backend (LLVM) | BC, Carsten | Parcoursprüfung: Station 1: Vorstellung der Lösung von B04x (online, 3 Teams, siehe Ankündigung) | |
Dezember | 03. | 18:00 - 19:30 Uhr (online): Edmonton III: Vorträge Edmontoner Projekte | Edmonton | |
04. | AST-basierte Interpreter 1, AST-basierte Interpreter 2 | Carsten | Parcoursprüfung: Station 1: Vorstellung der Lösung von B04x (online, 2 Teams, siehe Ankündigung) | |
11. | C++ I: Basics, Pointer & Referenzen, Klassen, Big 3 | Carsten | B05x Interpreter (Carsten, online) | |
18. | Feedback zu Station 1 | |||
25. | Weihnachtspause | |||
Januar | 01. | Weihnachtspause | ||
08. | Sprechstunde/Freies Arbeiten | Carsten | B06x C++ und dyn. Speicherverwaltung (Carsten, online) | |
15. | Freies Arbeiten/Puffer | |||
22. | Parcoursprüfung: Station 2 B07x (VL- und Praktika-Slots, siehe Ankündigung) | Carsten, BC | B07x Mini-Projekt (Carsten/BC, online) | |
(Prüfungsphase I) | 30. | Feedback-Gespräche (14:00 - 15:30 Uhr, online) | ||
(Prüfungsphase II) | Parcoursprüfung: Do, 27. Mar 2025, 08-18 Uhr, mdl. Prüfung (alle Themen) (je Prüfung ca. 45', Vergabe ca. 2 Wochen vorher) |
Prüfungsform, Note und Credits
Parcoursprüfung plus Testat, 5 ECTS (PO23)
-
Testat: Vergabe der Credit-Points
- Mindestens 4 der Übungsblätter B01, B02, B03, B04, B05 und B06 erfolgreich bearbeitet, und
- aktive Teilnahme an allen 3 Edmonton-Terminen.
("erfolgreich bearbeitet": Bearbeitung in 3er Teams, je mindestens 60% bearbeitet, fristgerechte Abgabe der Lösungen im ILIAS, Vorstellung der Lösungen im Praktikum)
-
Stationen:
- ILIAS-Test (einzeln, 20.11.)
- Vorstellung Mini-Projekt B07 (3er Teams, letzte VL-Woche)
Note für das Modul: Beide Stationen ergeben zu je 50% oder in der Gewichtung 30 Punkte (Station I) und 50 Punkte (Station II) die Gesamtnote (individuelle Günstigerprüfung).
Für Station I werden 3 Punkte Überhang gewährt: Von den 33 maximal erreichbaren Punkten werden 30 Punkte als 100% gewertet, darüber hinausgehende Punkte bleiben als Bonuspunkte erhalten.
-
Stationen:
- Mündliche Prüfung (individuell, ca. 45 Minuten, zweiter Prüfungszeitraum)
Die Note der mündlichen Prüfung ergibt die Gesamtnote.
Parcoursprüfung plus Testat, 5 ECTS (PO18)
-
Testat: Vergabe der Credit-Points
- Mindestens 4 der Übungsblätter B01, B02, B03, B04x, B05x und B06x erfolgreich bearbeitet, und
- aktive Teilnahme an allen 3 Edmonton-Terminen.
("erfolgreich bearbeitet": Bearbeitung in 3er Teams, je mindestens 60% bearbeitet, fristgerechte Abgabe der Lösungen im ILIAS, Vorstellung der Lösungen im Praktikum)
-
Stationen:
- Vortrag (3er Team, 27.11. bzw. 04.12. im Praktikum): Vorstellung der Lösung von B04x
- Vorstellung Mini-Projekt B07x (3er Teams, letzte VL-Woche)
Note für das Modul: Beide Stationen ergeben zu je 50% oder in der Gewichtung 40% (Station 1) und 60% (Station 2) die Gesamtnote (individuelle Günstigerprüfung).
-
Stationen:
- Mündliche Prüfung (individuell, ca. 45 Minuten, zweiter Prüfungszeitraum)
Die Note der mündlichen Prüfung ergibt die Gesamtnote.
Materialien
- "Compilers: Principles, Techniques, and Tools". Aho, A. V. und Lam, M. S. und Sethi, R. und Ullman, J. D. and Bansal, S., Pearson India, 2023. ISBN 978-9-3570-5488-1. Online über die O'Reilly-Lernplattform.
- "Crafting Interpreters". Nystrom, R., Genever Benning, 2021. ISBN 978-0-9905829-3-9. Online.
- "The Definitive ANTLR 4 Reference". Parr, T., Pragmatic Bookshelf, 2014. ISBN 978-1-9343-5699-9. Online über die O'Reilly-Lernplattform.
- "Writing a C Compiler". Sandler, N., No Starch Press, 2024. ISBN 978-1-0981-8222-9. Online über die O'Reilly-Lernplattform.
Förderungen und Kooperationen
Kooperation mit University of Alberta, Edmonton (Kanada)
Über das Projekt "We CAN virtuOWL" der Fachhochschule Bielefeld ist im Frühjahr 2021 eine Kooperation mit der University of Alberta (Edmonton/Alberta, Kanada) im Modul "Compilerbau" gestartet.
Wir freuen uns, auch in diesem Semester wieder drei gemeinsame Sitzungen für beide Hochschulen anbieten zu können. (Diese Termine werden in englischer Sprache durchgeführt.)