A compiler is a piece of software that translates a computer program from a higher programming language to another programming language (usually machine code). In general, this translation proceeds in several phases, the most important being lexical analysis, syntax analysis, semantic analysis, and code generations. Using lexical and syntactic analysis, we can translate the source program into a representation that is suitable for processing by a computer (abstract syntax tree). This intermediate representation serves as a starting point for optimization and code generation. The methods presented in this class can be applied in many fields of computer science. Therefore, the topics covered in this class are also interesting to students who do intend never to implement a compiler on their own.

 

Course Language: English

Suggested reading

 

  • Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers - Principles, Techniques, & Tools, Pearson International Edition, 2007
  • Michael Sipser: Introduction to the Theory of Computation, third edition.

 

Additional information

 

This class is part of the "applied computer science" curriculum.

Prerequisites

Basic knowledge of automata theory, formal languages, computer organization, and programming languages