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
In the programs
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
- Semester: Spring
 - Exam form: During the semester (summer session)
 - Subject examined: Advanced compiler construction
 - Courses: 2 Hour(s) per week x 14 weeks
 - Project: 2 Hour(s) per week x 14 weeks
 - Type: optional
 
Reference week
| Mo | Tu | We | Th | Fr | |
| 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:
Lecture
Exercise, TP
Project, Lab, other