Skip to content

Compiler-CampusMinden/CB-Vorlesung-Bachelor

Repository files navigation

has_license no_beamer title
true
true
IFM 3.1: Compilerbau (Winter 2025/26)

{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: Symboltabellen
    • Namen und Scopes
    • Typen, Klassen, Polymorphie
  4. Interpreter: AST-Traversierung
  5. C++ als zu verarbeitende Programmiersprache

Team

Kursformat

Vorlesung (2 SWS) Praktikum (2 SWS)
Do, 15:30 - 17:00 Uhr (Zoom) G1: Mi, 09:45 - 11:15 Uhr (Zoom)
G2: Mi, 11:30 - 13:00 Uhr (Zoom)
G3: Mi, 09:45 - 11:15 Uhr (Präsenz D320)
G4: Mi, 11:30 - 13:00 Uhr (Präsenz D320)

Achtung: Ab dem 23.10. fangen wir die Vorlesung eine Viertelstunde früher an als im Stundenplan eingetragen, um allen die Chance zu geben, den letzten Uni-Bus um 17:30 Uhr noch rechtzeitig zu erreichen.

Durchführung der Vorlesung als Flipped Classroom (Carsten) bzw. als reguläre Vorlesung (BC). Zugangsdaten Zoom siehe ILIAS.

Fahrplan

Hier finden Sie einen abonnierbaren Google Kalender mit allen Terminen der Veranstaltung zum Einbinden in Ihre Kalender-App.

Abgabe der Post Mortems jeweils Mittwoch bis 09:00 Uhr im ILIAS. Vorstellung der Lösung im jeweiligen Praktikum in der Abgabewoche.

Woche Vorlesung: Selbststudium (Vorbereitung) Vorlesung: Gemeinsame Sitzung Praktikum Edmonton/Minden-Meetings
06. - 10.10. Überblick | Sprachen | Anwendungen Orga (Zoom)
13. - 17.10. Reguläre Sprachen 1
20. - 24.10. Reguläre Sprachen 2 || CFG B01 Reguläre Sprachen
27. - 31.10. Lexer mit ANTLR Parser mit ANTLR B02 CFG
03. - 07.11. LL-Parser (Theorie) B03 ANTLR Mi, 05.11., 18:00 - 19:00 Uhr (online): Edmonton/Minden: ANTLR + Live-Coding
10. - 14.11. Lexer (Implementierung) LL-Parser (Implementierung)
17. - 21.11. Symboltabellen: Überblick | Scopes Funktionen | Klassen B04 LL hand coded
24. - 28.11. AST-basierte Interpreter 1 AST-basierte Interpreter 2 B05 Semantische Analyse
01. - 05.12. C++ I: Basics Pointer & Referenzen Mo, 01.12., 18:00 - 19:00 Uhr (online): Edmonton/Minden: Minden Presentations
08. - 12.12. C++ II: Klassen | Big Three | Operatoren Vererbung & Polymorphie B06 Interpreter Mo, 08.12., 18:00 - 19:00 Uhr (online): Edmonton/Minden: Edmonton Presentations
15. - 19.12. Sprechstunde Mathe-3-Irgendwas B07 C++
22. - 26.12. Weihnachtspause
29.12. - 02.01. Weihnachtspause
05. - 09.01. Sprechstunde Freies Arbeiten (B08)
12. - 16.01. Sprechstunde Freies Arbeiten (B08)
19. - 23.01. Prüfungsvorbereitung Rückblick (Zoom) B08 Mini-Projekt

Prüfungsform, Note und Credits

(Digitale) Klausur plus Studienleistung (Portfolio), 5 ECTS

  • Studienleistung: "Portfolio" - Kriterien je Person:

    1. Teilnahme an mind. zwei Edmonton/Minden-Terminen mit aktiver Beteiligung
    2. Mind. vier der Übungsblätter B01..B07 erfolgreich bearbeitet
    3. Abschlussvortrag zum erfolgreich bearbeiteten Mini-Projekt (B08) am Semesterende (21.01.) a 15 Minuten (pro Team)

    Je Kriterium: Abgabe eines Post Mortem im ILIAS (jede Person individuell)

  • Gesamtnote: (Digitale) Klausur im B40 (90 Minuten)

::: {.details title="Hinweise"}

  • Die Bearbeitung der Leistungen erfolgt im Team.
  • Ein Team umfasst 3 Personen.
  • Die Post Mortems sind individuell zu erstellen und abzugeben.
  • "Aktive Beteiligung" umfasst Anwesenheit und sachbezogene Beiträge; Anwesenheit/Beteiligung werden dokumentiert.
  • "Erfolgreiche Bearbeitung" eines Blattes umfasst Bearbeitung im Team, Bearbeitung aller Aufgaben des Blattes, fristgerechte Abgabe des ausreichenden Post Mortems im ILIAS. Die intensive Beschäftigung mit den Aufgaben muss erkennbar sein.

\smallskip

  • Post Mortem: Jede Person beschreibt individuell(!) die Bearbeitung des jeweiligen Kriteriums bzw. die Teilnahme an den Edmonton/Minden-Meetings zurückblickend mit mind. 150 bis max. 400 Wörtern (Nutzlast; Überschriften und Links zählen nicht mit). Gehen Sie dabei aussagekräftig und nachvollziehbar auf folgende Punkte ein:

    1. Zusammenfassung: Was wurde gemacht bzw. was wurde auf dem Meeting besprochen?
    2. Details: Kurze Beschreibung besonders interessanter Aspekte.
    3. Reflexion: Was war der schwierigste Teil? Wie haben Sie dieses Problem gelöst?
    4. Reflexion: Was haben Sie gelernt oder (besser) verstanden?
    5. Team: Mit wem haben Sie zusammengearbeitet?
    6. Link zu Ihrem Repo mit den relevanten Artefakten (Lösung, Slides für den Vortrag, ...).

    Für die Edmonton/Minden-Meetings passen Sie bitte die Punkte (1) bis (4) entsprechend inhaltlich an, (5) und (6) entfallen.

    Die Post Mortems geben Sie bitte pro Person bis spätestens zur jeweiligen Deadline im ILIAS ab.

    Siehe auch Compiler-CampusMinden/CB-Vorlesung-Bachelor-W25#3.

:::

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.

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


LICENSE

Unless otherwise noted, this work by BC George, Carsten Gips and contributors is licensed under CC BY-SA 4.0. See the credits for a detailed list of contributing projects.