< Index
Evaluation
Evaluation is performed through a combination of oral exam and
project work. The oral exam consists of a discussion of the topics
covered in the course.
The project work can be taken in groups of one to three students, and
in the following two modes:
- An independent project activity, consisting in the implementation of
an optimization or analysis pass in the LLVM compiler framework
(suggested only for students with previous experience in C/C++);
- A supervised project activity (21-28 hours), consisting in the
implementation of a compiler for a toy language targeting the ARM
assembly language. The sessions will be organized as follows:
- Recursive descent language parsing
- Transforming the Abstract Syntax Tree into a Control Flow Graph
- Design and implementation of the symbol table
- Function call translation
- Liveness analysis
- Register allocation (linear scan)
- ARM code generation (table-based)
Independent project activities also replace the oral exam, while the
supervised project activity does not.