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