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: 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

Vorlesung (2 SWS) Praktikum (2 SWS)
Mo, 09:00 - 10:30 Uhr (Zoom) G1: Fr, 09:45 - 11:15 Uhr (Zoom)
G2: Fr, 11:30 - 13:00 Uhr (Zoom)
G3: Fr, 09:45 - 11:15 Uhr (Präsenz J101)
G4: Fr, 11:30 - 13:00 Uhr (Präsenz J101)

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 Ü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 04. 07. 08:00 / 05. / 08. (BC, Präsenz)
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.: Projektwoche Semester 1+3 C++ II: Operatoren, Vererbung & Polymorphie, Templates
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)

Prüfungsform, Note und Credits

Parcoursprüfung plus Testat, 5 ECTS

  • Testat: Vergabe der Credit-Points

    1. Mindestens 4 der Übungsblätter B01, B02, B03, B04, B05 und B06 erfolgreich bearbeitet, und
    2. 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)

Prüfung im ersten Zeitraum

  • Stationen:

    1. ILIAS-Test (einzeln, 20.11.)
    2. 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.

Prüfung im zweiten Zeitraum

  • Stationen:

    1. Mündliche Prüfung (individuell, ca. 45 Minuten, zweiter Prüfungszeitraum)

    Die Note der mündlichen Prüfung ergibt die Gesamtnote.

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.