Programmiersprachen und Compilerbau

5 ECTS Deutsch B.Sc.

Letzte Aktualisierung: 28.02.2025

Grunddaten
Kürzel PUC
Dauer des Moduls 1 Semester
Angeboten im Sommersemester
Veranstaltungsort Gummersbach
Verantwortliche
Modulverantwortung
CHE
Christoph Hegemann
Lehrauftrag
Lehrende
CHE
Christoph Hegemann
Lehrauftrag
Prüfung
Prüfungsformen

Mündliche Prüfungen

Projektarbeit

Prüfungsphasen

Außerhalb der Prüfungswochen

Prüfende
1. Christoph Hegemann
2. Alexander Dobrynin
Workload
Vorlesung 42 h
Übung 0 h
Seminar 0 h
Praktikum 0 h
Projektbetreuung 0 h
Projektarbeit 0 h
Selbststudium 108 h
Gesamt 150 h
Studiengänge
Pflichtmodul

Keine Zuordnung

Wahlmodul
Informatik PO-2
Sem. 4
IT-Management (Informatik) PO-2
Sem. 4
Medieninformatik PO-4
Sem. 4
Wirtschaftsinformatik PO-5
Sem. 4
Voraussetzungen
Zwingend

Keine Angabe

Empfohlen
Fortgeschrittene Programmierkenntnisse

Angestrebte Lernergebnisse

  1. Verständnis für grundlegende Abstraktionen in Programmiersprachen, und die Fähigkeit diese auf neu gelernte Sprachen zu übertragen
  2. High-level Features und Konzepte in Programmiersprachen in Low-level Maschinenkonzepte übersetzen und ihre Performance Charakteristiken abwägen
  3. Parser für textuelle Formate implementieren
  4. Technische Spezifikationen lesen, verstehen, und implementieren (am Beispiel von WebAssembly)
  5. Dekomposition komplexer Datentransformationensprobleme in eine Folge von kleineren Transformation

Modulinhalte

Program Abstraction and Representation (FPL-Syntax/FPL-Abstraction)

  • Repräsentation von Programmen als Datentypen
  • Konkrete und Abstrakte Syntax Bäume
  • Lexikalische Analyse
  • Parsen mittels rekursivem Abstieg

Semantic analysis (FPL-Semantics/FPL-Types)

  • Name resolution
  • Spezifizieren eines Typsystems mittels typing judgements
  • Implementieren eines Bidirektionalen Typecheckers

Translation (FPL-Translation/FPL-Code)

  • Lowering von High-level Konstrukten
  • Typgerichtete Operator Auflösung
  • Repräsentation von Structs/Variants/... in linearem Speicher
  • Implementieren von Polymorphismus via Monomorphization

WebAssembly as a low-level bytecode (FPL-Systems/FPL-Code)

  • Virtuelle Maschinen und ihre Instruktionen (Bytecode)
  • Generieren und enkodieren von WebAssembly code

Lehr- und Lernmethoden (Medienformen)

  • Vorlesung/Seminar
  • Projektarbeit

Empfohlene Literatur

WebAssembly 1.0 specification: https://webassembly.github.io/multi-value/core/_download/WebAssembly.pdf

Hintergrundwissen (optional):

Types and Programming Languages - Benjamin C. Pierce (ISBN 0-262-16209-1) Modern Compiler Implementation in ML/Java - Andrew W. Appel

Besonderheiten

Keine Angabe