Advanced Compiler Construction
CS-420
Introduction
This course teaches techniques to efficiently implement modern functional and object-oriented languages. Several of these techniques are applied in an implementation of a simple functional language.
References
The following books and papers are good references for people interested in more in-depth treatment of some of the subjects covered in the course.
Books
The books below are available from the EPFL library either as printed or electronic books. You need to be connected to the EPFL network, either directly or through the VPN, to access the electronic versions.
- Compiling with Continuations
- by Andrew Appel (1991). An early but still very relevant book on using a continuation-based intermediate language for compilation (e-book).
- Modern Compiler Implementation in Java
- by Andrew Appel and Jens Palsberg (2002). A nice introduction to compiler implementation, with a good coverage of register allocation techniques (e-book).
- Engineering a Compiler (3rd edition)
- by Keith Cooper and Linda Torczon (2022). A high-level overview of compilation techniques, mostly without code. Good complement to Appel and Palsberg’s book.
- The Garbage Collection Handbook (2nd edition)
- by Richard Jones, Antony Hosking and Eliot Moss (2023). One of the few books about garbage collection (e-book, Web site).
Papers
- Compiling with Continuations, Continued
- by Andrew Kennedy (2007). Presents a CPS-based intermediate representation that was the direct inspiration for CPS/L3. Highly recommended.
- Representing control: a study of the CPS transformation
- by Olivier Danvy and Andrzej Filinski (1992). Presents the improved CPS transformation used in the course, and by Kennedy in his paper.
- Uniprocessor Garbage Collection Techniques
- by Paul Wilson (1992). An excellent, but somewhat dated, survey of garbage collection techniques.
Team
Teacher: Michel Schinz, TAs: Alexandre Pinazza, Marcin Wojnarowski