Compiler-CampusMinden / CB-Vorlesung-Bachelor

Lecture "Compilerbau" (B.Sc.)
https://www.hsbi.de/elearning/goto.php?target=crs_1089779&client_id=FH-Bielefeld
Creative Commons Attribution Share Alike 4.0 International
1 stars 0 forks source link
antlr code-generation compiler-construction hacktoberfest interpreter llvm-ir oer open-educational-resources teaching-materials teaching-website

archetype: "home" title: "IFM 3.1 (PO23) / IFM 5.21 (PO18): Compilerbau (Winter 2024/25)"

{width="80%"}

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

  1. Lexikalische Analyse: Scanner/Lexer
    • Reguläre Sprachen
    • Generierung mit ANTLR
  2. Syntaxanalyse: Parser
    • Kontextfreie Grammatiken (CFG)
    • LL-Parser (Top-Down-Parser)
    • Generierung mit ANTLR
  3. Semantische Analyse: Attributierte Grammatiken und Symboltabellen
    • Namen und Scopes
    • Typen, Klassen, Polymorphie
  4. Zwischencode: Intermediate Representation (IR), LLVM-IR
  5. Backend:
    • LLVM
    • Interpreter: AST-Traversierung
  6. C++ als zu verarbeitende Programmiersprache

Team

Kursformat

:::::: {.tabs groupid="modul-po"} ::: {.tab title="IFM 3.1 CB (PO23, 3. Semester)"}

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.

::: ::: {.tab title="IFM 5.21 CB (PO18, 5. Semester)"}

Vorlesung (2 SWS) Praktikum (2 SWS)
Mi, 08:00 - 09:30 Uhr (online) S5, G1: Mi, 09:30 - 11:00 Uhr (online)
(Carsten: Flipped Classroom, BC: Vorlesung) S5, G2: Mi, 09:30 - 11:00 Uhr (online)
S5, G3: Mi, 09:30 - 11:00 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.

::: ::::::

Prüfungsform, Note und Credits

:::::::::::: {.tabs groupid="modul-po"} ::::::::: {.tab title="IFM 3.1 CB (PO23, 3. Semester)"}

Parcoursprüfung plus Testat, 5 ECTS (PO23)

:::::: {.tabs groupid="exams"} ::: {.tab title="Prüfung im ersten Zeitraum"}

::: ::: {.tab title="Prüfung im zweiten Zeitraum"}

::: ::::::

::::::::: ::::::::: {.tab title="IFM 5.21 CB (PO18, 5. Semester)"}

Parcoursprüfung plus Testat, 5 ECTS (PO18)

:::::: {.tabs groupid="exams"} ::: {.tab title="Prüfung im ersten Zeitraum"}

::: ::: {.tab title="Prüfung im zweiten Zeitraum"}

::: ::::::

::::::::: ::::::::::::

Materialien

  1. "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.
  2. "Crafting Interpreters". Nystrom, R., Genever Benning, 2021. ISBN 978-0-9905829-3-9. Online.
  3. "The Definitive ANTLR 4 Reference". Parr, T., Pragmatic Bookshelf, 2014. ISBN 978-1-9343-5699-9. Online über die O'Reilly-Lernplattform.
  4. "Writing a C Compiler". Sandler, N., No Starch Press, 2024. ISBN 978-1-0981-8222-9. Online über die O'Reilly-Lernplattform.

Fahrplan

:::::: {.tabs groupid="modul-po"} ::: {.tab title="IFM 3.1 CB (PO23, 3. Semester)"}

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 22. / 25. / 21. (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 05. / 08. / 04. (BC, Präsenz)
46 13.: Überblick Symboltabellen, Symboltabellen: Scopes, Symboltabellen: Funktionen, Symboltabellen: Klassen Carsten 11.: B03 ANTLR 12. / 15. / 11. (Carsten, online)
47 20.: [09:45 - 10:45 Uhr (B40): Parcoursprüfung: Station 1 ILIAS (Grammar, Lexing, Parsing)]{.alert} 18.: B04 Symboltabellen 19. / 22. / 18. (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: Datentypen, Arrays, Funktionen, Pointer, Referenzen Carsten 09.: B05 Interpreter 10. / 13. / 09. (Carsten, online)
51 18.: Projektwoche Semester 1+3
52 25.: Weihnachtspause
Januar 01 01.: Weihnachtspause
02 08.: C++ II: Klassen, Operatoren, Vererbung, Polymorphie Carsten 06.: B06 C++ 07. / 10. / 06. (Carsten, online)
03 15.: Freies Arbeiten/Puffer
04 22.: [Parcoursprüfung: Station 2 B07+B08 (VL- und Praktika-Slots, siehe Ankündigung)]{.alert} Carsten, BC 21. / 24. / 20. (Carsten/BC, online)
(Prüfungsphase I) Keine separate Prüfung
(Prüfungsphase II) [Parcoursprüfung: mdl. Prüfung (alle Themen)]{.alert}

::: ::: {.tab title="IFM 5.21 CB (PO18, 5. Semester)"}

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 B01 Reguläre Sprachen (BC, Präsenz)
29. 18:00 - 19:30 Uhr (online): Edmonton I: ANTLR + Live-Coding Edmonton
30. Lexer mit ANTLR, Parser mit ANTLR Carsten
November 06. Dienstbesprechung B02 CFG (BC, Präsenz)
13. Überblick Symboltabellen, Symboltabellen: Scopes, Symboltabellen: Funktionen, Symboltabellen: Klassen Carsten B03 ANTLR (Carsten, online)
20. [08:00 - 09:30 Uhr (online): Vortrag: Vorstellung der Lösung von B04x ("Generalprobe")]{.alert}
26. [18:00 - 19:30 Uhr (online): Parcoursprüfung: Station 1 / Edmonton II: Vorträge Mindener Projekte: B04x]{.alert} Minden (S5)
27. Überblick Zwischencode, Überblick Backend (LLVM) BC, Carsten
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
11. C++ I: Datentypen, Arrays, Funktionen, Pointer, Referenzen Carsten B05x Interpreter (Carsten, online)
18. Projektwoche Semester 1+3
25. Weihnachtspause
Januar 01. Weihnachtspause
08. C++ II: Klassen, Operatoren, Vererbung, Polymorphie Carsten B06x C++ und Pointer/Speicherverwaltung (Runtime in Java) (Carsten, online)
15. Freies Arbeiten/Puffer
22. [Parcoursprüfung: Station 2 B07x+B08x (VL- und Praktika-Slots, siehe Ankündigung)]{.alert} Carsten, BC (Carsten/BC, online)
(Prüfungsphase I) Keine separate Prüfung
(Prüfungsphase II) [Parcoursprüfung: mdl. Prüfung (alle Themen)]{.alert}

::: ::::::

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.)

::: slides

LICENSE

Unless otherwise noted, this work is licensed under CC BY-SA 4.0. :::