185.A04 Optimierende Übersetzer
Diese Lehrveranstaltung ist in allen zugeordneten Curricula Teil der STEOP.
Diese Lehrveranstaltung ist in mindestens einem zugeordneten Curriculum Teil der STEOP.

2022W, VU, 2.0h, 3.0EC, wird geblockt abgehalten
TUWEL

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung
  • Format der Abhaltung: Hybrid

Lernergebnisse

Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage (u.a.)

  • die grundlegenden Prinzipien und Konzepte optimierender Übersetzung, ihrer theoretischen Fundierung, mathematischen Grundlagen und von Methoden zu ihrem empirischen und formalen Korrektheits-, Vollständigkeits- und Optimalitätsnachweis am Beispiel typischer praxisrelevanter Programmanalysen und -transformationen optimierender Übersetzung aufzuzeigen, zu beurteilen und wertend einzuordnen.
  • diese Prinzipien und Konzepte auf neue Aufgaben optimierender Übersetzung zu übertragen und anzuwenden und das gewählte Vorgehen sachlich und fachlich zu begründen.
  • die Möglichkeiten und Grenzen optimierender Übersetzung im Spannungsfeld von Entscheidbarkeit, Skalierbarkeit und Wirksamkeit als Ganzes, auf der Ebene von Analyse- und Optimierungsproblemen und konkreter Analyse- und Optimierungsverfahren einzuordnen, zu beurteilen und daraus Empfehlungen für die allgemeine Anwendungsprogrammierung abzuleiten.

Inhalt der Lehrveranstaltung

Die Vorlesung vertieft in Theorie und Praxis das Gebiet
Programmanalyse und -optimierung, das ein wesentliches
Forschungsgebiet im Bereich Programmiersprachen und Übersetzerbau
ist. Dabei spannt die Vorlesung den Bogen von den theoretischen
Grundlagen bis zur praktischen Anwendung und der automatischen
Generierung von Programmanalysen und Optimierungen. Im Übungsteil
werden die in der Vorlesung behandelten Themen in theoretischen und
praktischen Übungen eigenständig vertieft. Für die praktischen Übungen
wird dabei die Static Analysis Tool Integration Engine SATIrE
eingesetzt; ein System, das diverse Werkzeuge für die Analyse und
Optimierung von objektorientierten Sprachen integriert, darunter den
Program Analyzer Generator (PAG).

Teil I: Einführung

  • Motivation
  • Klassische Gen/Kill-Datenflussanalysen

Teil II: Intraprozedurale Datenflussanalyse

  • Intraprozeduraler Datenflussanalyserahmen
  • Gen/Kill-Datenflussanalysen reinspiziert
  • Konstantenausbreitung und -faltung
  • Partielle Redundanzelimination
    • Busy Code Motion
    • Lazy Code Motion
    • Sparse Code Motion
    • Zusammenfassung, Ausblick

Teil III: Interprozedurale Datenflussanalyse

  • Grundlagen
  • Interprozeduraler Datenflussanalyserahmen
  • Funktionaler Ansatz
  • Kontextinformationsansatz
  • Anwendungen

Teil IV: Erweiterungen, andere Sprachumgebungen

  • Alias- und Heap-Analysen
  • Optimierungen für objektorientierte Sprachen

Teil V: Abschluss und Ausblick

  • Zusammenfassung, Ausblick

Literaturverzeichnis

Anhänge

  • Mathematische Grundlagen
  • Flussgraphen, Darstellungspragmatik
  • Implementierung von Busy und Lazy Code Motion
  • Lazy Strength Reduction

Ausgewählte Leseempfehlungen

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin. Principles of Program Analysis.Springer-V., 2. Auflage, 452 Seiten, ISBN 3-540-65410-0, 2005.
  • Y. N. Srikant, Priti Shankar. The Compiler Design Handbook: Optimizations & Machine Code Generation. CRC Press, 1. Auflage, 928 Seiten, ISBN 084931240X, 2002. 
  • Keith D. Cooper, Linda Torczon. Engineering a Compiler. Morgan Kaufmann, 801 Seiten, ISBN 155860698X, 2003. 
  • Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 856 Seiten, ISBN 1558603204, 1997.

Methoden

Methoden

  • Angeleitetes eigenständiges Erlernen und Einüben: Durch Vorträge (Orientierung, Einordnung) und umgekehrte Klassenzimmersitzungen (Diskussion, Vertiefung) angeleitetes eigenständiges Erlernen und Einüben der in den Lernergebnissen beschriebenen Fähigkeiten mithilfe zur Verfügung gestellter Lehr- und Lernunterlagen, theoretischer und praktischer Übungsaufgaben und weiterer nach Bedarf, Interesse selbstgewählter Materialien aus ergänzend und vertiefend vorgeschlagenen Lehrbüchern, Tutorien und wissenschaftlichen Originalarbeiten.
  • Vorbild- und rückmeldungsgeleitetes Lernen: Präsentieren, erläutern,
    begründen, vergleichen, wertend gegenüberstellen eigener und fremder
    Aufgabenlösungen aus sachlicher und fachlicher Sicht in geleiteten
    Übungseinheiten.
  • Selbsteinschätzungstests: Tests, Leit- und Kontrollfragen zur regelmäßigen Selbsteinschätzung
    und Selbstreflexion des eigenen bisherigen Lernfortschritts und Lernerfolgs.

Prüfungsmodus

Prüfungsimmanent

Weitere Informationen

Die Veranstaltung ist als Präsenzveranstaltung geplant. Im Fall erneuter pandemie- oder neu energiebedingter Einschränkungen wird die Lehrveranstaltung auf einen Online-Modus umgestellt.

Aufteilung der ECTS-Punkte:

Der Lehrveranstaltung sind 3.0 ECTS-Punkte zugeordnet. Diese
entsprechen einem durchschnittlichen Lernaufwand von 75
Stunden. Dieser durchschnittliche Lernaufwand verteilt sich in
folgender Weise auf die einzelnen Lernaktivitäten der Lehrveranstaltung
(die Angaben Teil I bis Teil V beziehen sich auf Teil I bis Teil V
der Lehrveranstaltungsunterlagen):

  • Angeleitete Lernaktivitäten (17.5h)
    • Vortrag: 12.0h (12 Termine * 1.0h)
    • Umgekehrtes Klassenzimmer: 3.0h (6 Termine * 0.5h)
    • Übungseinheiten: 2.5h (5 Termine * 0.5h)
  • Eigenständige Lernaktivitäten (57.0h)
    • Selbstgeleitetes Erarbeiten von Lernergebnissen: 35.0h (Richtwert: Teil I/4.0h, Teil II/12.0h, Teil III/12.0h, Teil IV/6.0h, Teil V/1.0h)
    • Speziell: Lösen der Übungsaufgaben: 20.0h (Richtwert: 4 Angaben * 2.0h + 4 Angaben * 3.0h)
    • Vorbereitung auf die mündliche Prüfung: 2.0h
  • Mündliche Prüfung: 0.5h

Die Lehrveranstaltung beginnt mit Vorbesprechung und erstem Vortragsteil am Dienstag, den 04.10.2022, 16:15-17:45 Uhr, EI 6 Eckert HS.

Vortragende Personen

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Di.16:00 - 18:0004.10.2022 - 24.01.2023EI 6 Eckert HS 185.A04 Optimierende Compiler
Optimierende Übersetzer - Einzeltermine
TagDatumZeitOrtBeschreibung
Di.04.10.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.11.10.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.18.10.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.25.10.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.08.11.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.22.11.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.29.11.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.06.12.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.13.12.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.20.12.202216:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.10.01.202316:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.17.01.202316:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
Di.24.01.202316:00 - 18:00EI 6 Eckert HS 185.A04 Optimierende Compiler
LVA wird geblockt abgehalten

Leistungsnachweis

  • Acht beurteilte Abgaben theoretischer und praktischer Übungsaufgaben.
  • Eine beurteilte 30-minütige mündliche Prüfung über Vorlesungs- und Übungsstoff.

Weitere beurteilte Leistungsnachweise gibt es nicht.

Beurteilung, Beurteilungsschema

Gesamtbeurteilung gewichtet im Verhältnis 1 zu 1 aus Beurteilungen der theoretischen und praktischen Aufgabenlösungen und der mündlichen Prüfung, falls beide Teilbeurteilungen positiv sind, sonst nicht genügend; bei halben Noten gibt die Note der mündlichen Prüfung den Ausschlag.

Beurteilungsschema Übungsaufgaben: ab 50% genügend, ab 62.5% befriedigend, ab 75% gut, ab 87.5% sehr gut.

LVA-Anmeldung

Von Bis Abmeldung bis
26.08.2022 01:00 07.10.2022 12:00 28.10.2022 12:00

Gruppen-Anmeldung

GruppeAnmeldung VonBis
Optimierende Übersetzer 103.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 203.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 303.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 403.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 503.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 603.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 703.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 803.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 903.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1003.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1103.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1203.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1303.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1403.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1503.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1603.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1703.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1803.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 1903.10.2022 12:0014.10.2022 12:00
Optimierende Übersetzer 2003.10.2022 12:0014.10.2022 12:00

Curricula

Literatur

Es wird kein Skriptum zur Lehrveranstaltung angeboten.

Vorkenntnisse

Die Vorlesung schließt inhaltlich an die Lehrveranstaltung 185.A48
Übersetzerbau an und ergänzt die bisherige Lehrveranstaltungen 185.274
Weiterführender Übersetzerbau und die akuelle Lehrveranstaltung 185.276
Analyse und Verifikation. Sie empfiehlt sich deshalb inbesondere für
Studierende, die im Bereich von Programmiersprachen und Übersetzerbau
einen besonderen Schwerpunkt setzen, eine Seminararbeit, ein Praktikum
oder ihre Diplomarbeit anfertigen möchten.

Vorausgehende Lehrveranstaltungen

Begleitende Lehrveranstaltungen

Vertiefende Lehrveranstaltungen

Sprache

bei Bedarf in Englisch