185.A04 Optimizing Compilers
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2018W, VU, 2.0h, 3.0EC, to be held in blocked form


  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise

Aim of course

The students gain a comprehensive understanding of the theoretical
foundations and practical applications of program analysis and
optimization in compiler construction. They learn to valuate the
potential and limitations of automatic analyses and
optimizations. Beyond applications in compiler construction, this
allows them to design and write software in a style that, where
possible, comprehensibility, maintainability, and robustness is
prioritized over unnecessary performance considerations.

Subject of course

The course is concerned with the theory and practice of program
analysis and optimization, which is an essential field of research in
the area of programming languages and compilers. The course stretches
from the theoretical foundations to practical applications and the
automatic generation of program analyses and
optimizations. Theoretical and practical assignments as part of the
tutorial offer the opportunity to independently apply and practice
various analysis and optimization techniques, to prove properties they
meet, and to gain hands-on experience of the SATIrE tool used for
practical assignments. SATIrE integrates various tools for the
analysis and optimization of object-oriented languages, among these
the Program Analyzer Generator (PAG).

Part I: Introduction

  • Motivation
  • Classical Gen/Kill data flow analyses

Part II: Intraprocedural Data Flow Analysis

  • Intraprocedural data flow analysis framework
  • Gen/Kill data flow analyses revisited
  • Constant propagation and folding
  • Partial redundancy elimination (PRE)
  • PRE: Busy code motion
  • PRE: Lazy code motion
  • PRE: Sparse code motion
  • PRE: Summary, looking ahead

Part III: Interprocedural Data Flow Analysis

  • Foundations
  • Interprocedural data flow analysis framework
  • The functional approach
  • The context information approach
  • Applications

Part IV: Extensions, other Settings

  • Alias and heap analyses
  • Optimizations for object-oriented languages

Part V: Conclusions

  • Summary, looking ahead



  • Mathematical foundations
  • Flow graphs, pragmatics of representation
  • Implementing busy and lazy code motion
  • Lazy strength reduction

The preliminary course meeting and the first lecture take 
place on Tueday, 2 October 2018, 3.15 - 4.45 pm, in "Hörsaal GM7
Kleiner Schiffbau", Bauteil BD Hoftrakt (1st Floor), Room number BD01B41,
Getreidemarkt 9.

Additional information

ECTS Break Down:

The course is assigned 3.0 ECTS points. This corresponds to an average
workload of 75 hours. This average workload is divided among the
various parts of the course as follows:

  • Attending the lectures, pre- and post-processing: 35 hours.
  • Assignments and excercise interviews: 35 hours.
  • Preparation for the examination and oral examination: 5 hours.



Course dates

Tue15:00 - 17:0002.10.2018 - 22.01.2019Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Optimizing Compilers - Single appointments
Tue02.10.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue09.10.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue16.10.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue23.10.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue30.10.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue06.11.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue13.11.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue20.11.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue27.11.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue04.12.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue11.12.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue18.12.201815:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue08.01.201915:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue15.01.201915:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Tue22.01.201915:00 - 17:00Kleiner Schiffbau LVA 185.A04 Optimizing Compilers
Course is held blocked

Examination modalities

Assessment of the programming assignments and the oral examination
on the lecture and tutorial materials. Further information on the
examination modalities are given on the homepage of the course.

Course registration

Begin End Deregistration end
01.10.2018 01:00 12.10.2018 12:00 26.10.2018 12:00

Group Registration

GroupRegistration FromTo
Optimierende Übersetzer 101.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 201.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 301.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 401.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 501.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 601.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 701.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 801.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 901.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1001.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1101.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1201.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1301.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1401.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1501.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1601.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1701.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1801.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 1901.10.2018 12:0012.10.2018 12:00
Optimierende Übersetzer 2001.10.2018 12:0012.10.2018 12:00



No lecture notes are available.

Previous knowledge

The course extends the course 185.311 Compiler Construction and
complements the courses 185.274 Advanced Compiler Construction and
185.276 Analysis and Verification. The course is thus especially
recommended for students who would like to focus on the field of
programming languages and compilers, and plan to work on a project or
to write a seminar or master's thesis in this field.

Preceding courses

Accompanying courses