The EPFL's advanced compiler construction course for SIN/SSC master students is given on Fridays from 10:15 to 12:00 (course) and 13:15 to 15:00 (project) during the summer semester. Courses are in INM 10, project in INF 1.

Overview

You will learn about techniques used to implement high level languages and interpreters, and compilation techniques used to obtain high performance on modern computer architectures. You will also get the opportunity to study one of these techniques in depth and gain experience with implementation issues through several projects in the context of an actual compiler and virtual machine.

The course will include several practical projects.

Lectures

Week 1.
Introduction 1/page color or 6/page b&w. Project introduction 1/page color or 6/page b&w.
Week 2.
Interpreters and Virtual Machines 1/page color or 6/page b&w.
Additional resources: Threaded Code Variations and Optimizations, Stack Caching for Interpreters and vmgen - A Generator of Efficient Virtual Machines Interpreters.
Week 3 and 4.
Memory management 1/page color or 6/page b&w or with unrolled animations.
Additional resources: Uniprocessor Garbage Collection Techniques, Space Efficient Conservative Garbage Collection.
Week 5.
Closure Conversion 1/page color or 6/page b&w
Week 6.
Continuations 1/page color or 6/page b&w
Week 7.
Tail Calls 1/page color or 6/page b&w
Week 8.
Implementation of Object-Oriented languages 1/page color or 6/page b&w or 1/page with animations
Week 9.
Introduction to Program Optimization 1/page color or 6/page b&w
Week 10.
Data Flow Analysis 1/page color or 6/page b&w
Week 11.
Register Allocation 1/page color or 6/page b&w or 1/page with animations.
Week 12.
SSA form 1/page color or 6/page b&w.
Week 13.
Instruction Scheduling 1/page color or 6/page b&w.

Exam schedule

The exam takes place on Thursday, June 21 and Friday, June 22. Here is the current schedule:

Thursday, June 21
11:15 Antoine Yersin
11:35 Beatrice Forster
11:55 Eyer Leander
Friday, June 22
8:00 Philippe Sutter
8:20 Robin Mange
8:40 Lukas Benda
9:00 Olivier Gobet
9:20 Vincent Pazeller
9:40 Javier Sanchez Tamargo
10:00 Sandro Stucki
10:20 Michel Ganguin
10:40 Mirco Dotta

Projects

Part 0

This first session will familiarize you with the framework you will be working for the rest of this course. You will not be graded, but you absolutely need to complete this part in order to work on the more advanced projects.

Part 0.5

This session will familiarize you with the framework you will be working for the rest of this course. You will not be graded, but you absolutely need to complete this part in order to work on the more advanced projects.


Part 1

In this project you will implement mark & sweep garbage collection.

Part 2

In this project you will implement closure conversion.

Part 3

In this project you will implement tail call elimination.

Part 4

For this part you should choose an advanced project.