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.
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