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, Corso a scelta, Corso, 1° anno
Master of Science in Informatics, Corso a scelta, Corso, 2° anno
Master of Science in Software & Data Engineering, Corso a scelta, Corso, 1° anno
Dottorato in Scienze informatiche, Corso a scelta, Corso, 1° anno (4 ECTS)
Dottorato in Scienze informatiche, Corso a scelta, Corso, 2° anno (4 ECTS)