course: Compiler Design and Implementation

number:
148226
teaching methods:
lecture with integrated tutorials
media:
overhead transparencies
responsible person:
Prof. Dr.-Ing. Michael Hübner
lecturers:
Prof. Dr. Pedro Diniz (extern), Prof. Dr.-Ing. Michael Hübner (ETIT)
language:
english
HWS:
2
CP:
2
offered in:
summer term

dates in summer term

  • lecture: Wednesday the 10.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Thursday the 11.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Friday the 12.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Monday the 15.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Tuesday the 16.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Wednesday the 17.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Thursday the 18.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Friday the 19.05.2017 from 15:00 to 16.30 o'clock in ID 1/168
  • lecture: Monday the 22.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Tuesday the 23.05.2017 from 15:00 to 16.30 o'clock in ID 04/653
  • lecture: Wednesday the 24.05.2017 from 15:00 to 16.30 o'clock in ID 04/653

goals

This course is intended to give the students a thorough knowledge of compiler design techniques and tools for modern computer programming languages. This course covers advanced topics such as data-flow analysis and control-flow analysis, code generation and program analysis and optimization.

content

  • Front End: Lexical Analysis and Parsing . Generating an Abstract Syntax Tree (no homework)
  • Semantic Analysis and Syntax-Directed Translation: Type Checking. (HW #1)
  • Intermediate Code Generation
  • Run-Time Environments
  • Register Allocation and Instruction Scheduling
  • Optimization and Control-Flow Analysis

requirements

none

recommended knowledge

Students should be familiar with the concepts in theory of computation (e.g., regular sets and context-free grammars); design and analysis of algorithms (e.g., asymptotic complexity, divide and conquer and dynamic-programming techniques); and have strong programming skills using dynamic, pointer-based data structures either in C or C++ programming languages. Students should also be familiar with basic concepts of imperative programming languages such as scoping rules, parameter passing disciplines and recursion.

literature

  1. Muchnick, S. "Advanced Compiler Design and Implementation", Morgan Kaufmann, None
  2. Aho, Alfred V., Lam, Monica S., Sethi, Ravi "Compilers Principles, Techniques, & Tools", Addison Wesley Longman Publishing Co, 2005
  3. Cooper, Keith, Torczon, Linda "Engineering a Compiler", Morgan Kaufmann, 2010