This course is about how programs written in high-level languages are executed on modern hardware. Understanding how languages are implemented is useful for reasoning about program behavior and performance. A secondary goal of the course is to expose students to the principles, techniques, and tools used to construct compilers and interpreters. The course will cover both the theory and practice of programming language implementation. Topics include compiler structure, lexical and syntactic analysis (parsing), types, semantic analysis, program representations, data-flow analysis, register allocation, optimization, and compiler construction tools.
Advanced Programming & Design, Algorithms & Complexity, Software Performance
- "Compilers: Principles, Techniques, and Tools", 2nd edition, Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman, 2006.
Master of Science in Informatics, Elective course, Lecture, 1st year
Master of Science in Informatics, Elective course, Lecture, 2nd year
Master of Science in Software & Data Engineering, Elective course, Lecture, 1st year
PhD programme of the Faculty of Informatics, Elective course, Lecture, 1st year (4 ECTS)
PhD programme of the Faculty of Informatics, Elective course, Lecture, 2nd year (4 ECTS)