Advanced Compiler Construction
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
All the books below are available from the EPFL library as printed books, and several of them are also available as e-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
- by Keith Cooper and Linda Torczon (2012). A high-level overview of compilation techniques, mostly without code. Good complement to Appel and Palsberg's book.
- The Garbage Collection Handbook – The art of automatic memory management
- by Richard Jones, Antony Hosking and Eliot Moss. 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: Georg Schmid, Maxime Kjaer