Logo EPFL
LAMP
Ecole Polytechnique Fédérale de Lausanne
Advanced Compiler Construction
English only
Lectures: Friday 10:15-12:00, room INM010
Lab: Friday 13:15-15:00, room INF1
  Goals

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

  • Implementation of high level languages
    • Implementation of higher order functions, coroutines, and processes.
    • Uniprocessor garbage collector techniques.
    • Virtual machines and the efficient implementation of their interpreters.
  • Optimization techniques
    • Data-flow analysis, program optimization, and code generation across basic blocks, procedures, and complete programs.
    • Interprocedural and intraprocedural analysis, intermediate representations, register allocation, and instruction scheduling.
    • Dependence analysis and loop transformations.

The course will include several practical projects.

The projects count towards 70% of the final grade. The rest of 30% is given by the exam. The 70% are distributed unevenly between the 5 projects. Check each project for its assigned weight.

Lecturer: Dr. Michel Schinz, stairsnone, phonenone
Assistant: Iulian Dragos, stairsINR321, phone36864
  Exam
The exam will take place in room BC355
Exam schedule
(Mon) 19.06.2006 (Tu) 20.06.2006 (Wed) 21.06.2006 (Thu) 22.06.2006
09:00-09:20 Marco Schmalz Benoît Perroud
09:20-09:40 Cédric Lüthi
09:40-10:00 Sébastien Cevey Magnus Sköld
10:00-10:20 François Bochatay Martin Ekera
10:20-10:40 Yann Randin Michaël Desboeufs
10:40-11:00 Samuel Mercier
  1. General course introduction.
  2. Slides as PDFs 6/page b&w, 1/page color.
  3. Project introduction.
  4. Slides as PDFs 6/page b&w, 1/page color.
  5. Interpreters and virtual machines.
  6. Slides as PDFs 6/page b&w, 1/page color.
  7. Memory management (part I).
  8. Slides as PDFs 6/page b&w, 1/page color, 1/page color with animations.
  9. Memory management (part II).
  10. Slides as PDFs 6/page b&w, 1/page color, 1/page color with animations.
  11. Object-oriented languages.
  12. Slides as PDFs 6/page b&w, 1/page color, 1/page color with animations.
  13. Functional languages (part I: functions).
  14. Slides as PDFs 6/page b&w, 1/page color.
  15. Functional languages (part II: tail calls).
  16. Slides as PDFs 6/page b&w, 1/page color.
  17. Functional languages (part III: continuations).
  18. Slides as PDFs 6/page b&w, 1/page color.
  19. Introduction to program optimisation.
  20. Slides as PDFs 6/page b&w, 1/page color.
  21. Data-flow analysis.
  22. Slides as PDFs 6/page b&w, 1/page color.
  23. Data-flow analysis (part II).
  24. Slides as PDFs 6/page b&w, 1/page color.
  25. Register allocation.
  26. Slides as PDFs 6/page b&w, 1/page color, 1/page color with animations.
  27. SSA form.
  28. Slides as PDFs 6/page b&w, 1/page color.
  29. Instruction scheduling.
  30. Slides as PDFs 6/page b&w, 1/page color.
  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.

  • Description: Part 0
  • Start Date: March 17, 2006
  • End Date: March 24, 2006
  • Framework: project.zip
  Part 1

In this project you will implement threaded mode interpretation in minivm.

  • Description: Part 1
  • Start Date: March 24, 2006
  • End Date: April 7, 2006
  • Weight: 6%
  • Framework: project.zip
  Part 2

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

  • Description: Part 2
  • Start Date: April 7, 2006
  • End Date: May 5, 2006
  • Weight: 14%
  • Framework: project.zip (same as before)
  Part 3

In this project you will implement closure conversion.

  • Description: Part 3
  • Start Date: May 5, 2006
  • End Date: May 19, 2006
  • Weight: 14%
  • Framework: project.zip (same as before)
  Part 4

In this project you will implement tail call elimination.

  • Description: Part 4
  • Start Date: May 19, 2006
  • End Date: May 26, 2006
  • Weight: 6%
  • Framework: project.zip (same as before)
  Part 5

For this part you should choose an advanced project.

  • Description: Part 5
  • Start Date: June 2nd, 2006
  • End Date: June 23, 2006
  • Weight: 30%
  • Framework: project.zip (same as before)