Advanced compiler construction
Summary
Students learn several implementation techniques for modern functional and object-oriented programming languages. They put some of them into practice by developing key parts of a compiler and run time system for a simple functional programming language.
Content
Part 1: implementation of high-level concepts
- functional languages: closures, continuations, tail call elimination,
 - object-oriented languages: object layout, method dispatch, membership test.
 
Part 2: optimizations
- compiler intermediate representations (RTL, SSA, CPS),
 - inlining and simple optimizations,
 - register allocation.
 
Part 3: run time support
- interpreters and virtual machines,
 - memory management (including garbage collection).
 
Keywords
compilation, programming languages, functional programming languages, object-oriented programming languages, code optimization, register allocation, garbage collection, virtual machines, interpreters, Scala.
Learning Prerequisites
Recommended courses
CS-320 Computer language processing
Important concepts to start the course
Excellent knowledge of Scala and C programming languages
Learning Outcomes
By the end of the course, the student must be able to:
- Assess / Evaluate the quality of a compiler intermediate representation
 - Design compilers and run time systems for object-oriented and functional programming languages
 - Implement rewriting-based compiler optimizations
 - Implement efficient virtual machines and interpreters
 - Implement mark and sweep or copying garbage collectors
 
Teaching methods
Ex Cathedra, mini-project
Assessment methods
Continuous control (mini-project 80%, final exam 20%)
Supervision
| Office hours | No | 
| Assistants | Yes | 
| Forum | Yes | 
Resources
Virtual desktop infrastructure (VDI)
No
Bibliography
The Garbage Collection Handbook - The Art of Automatic Memory Management, second edition, Richard Jones, Antony Hosking, Eliot Moss (ISBN 9781032218038).
Ressources en bibliothèque
Websites
Dans les plans d'études
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
- Semestre: Printemps
 - Forme de l'examen: Pendant le semestre (session d'été)
 - Matière examinée: Advanced compiler construction
 - Cours: 2 Heure(s) hebdo x 14 semaines
 - Projet: 2 Heure(s) hebdo x 14 semaines
 - Type: optionnel
 
Semaine de référence
| Lu | Ma | Me | Je | Ve | |
| 8-9 | |||||
| 9-10 | |||||
| 10-11 | |||||
| 11-12 | |||||
| 12-13 | |||||
| 13-14 | |||||
| 14-15 | |||||
| 15-16 | |||||
| 16-17 | |||||
| 17-18 | |||||
| 18-19 | |||||
| 19-20 | |||||
| 20-21 | |||||
| 21-22 | 
Légendes:
Cours
Exercice, TP
Projet, Labo, autre