Course Instructor: Mihnea Muraru
The course addresses the concepts, algorithms, techniques, and instruments required to understand, specify, and implement the components of a compiler for a given programming language. The main topics covered are: lexical analysis, syntactic analysis (top-down and bottom-up parsing), semantic analysis (symbol resolution and type checking), code generation, operational semantics, optimizations, register allocation, instruction selection and planning, automatic memory management. Most concepts are implemented through lab activities and programming assignments, the final outcome being a working compiler for a didactic programming language.