Ecole Polytechnique Fédérale de Lausanne
Compilation 2003/2004
english | français
  • 03/02/2004:
    Added slides for Part 11.

  • Here is a summary of important dates and deadlines:
    05/02/2004, 14:00: Deadline for subscribing to the oral exams.
    06/02/2004, 13:00: Oral exam.
    06/02/2004, 16:00: Deadline for sending part 5 of the project (by e-mail).
    12/02/2004, 09:00: Oral exam for students of communication engineering taking Compilation as a replacement for Compilation A.

  • 28/01/2004:
    Added slides for Part 10.

  • 20/01/2004:
    Added slides for Part 9.

  • 13/01/2004:
    Added slides for Part 8.

  • 09/01/2004:
    Published fifth part of the project.

  • 06/01/2004:
    Added slides for Part 7.

  • 12/12/2003:
    Published fourth part of the project.


This is a course about implementing programming languages. It aims to teach the fundamental aspects of analysing programming languages and mapping them into executable form. At the end of the course, the student should

  • be able to define the formal syntax of a programming language,
  • be able to define the semantics of a language through interpreters,
  • know the internal structure and implementation of compilers,
  • be able to write a compiler that translates a simple language into the code of a virtual machine,
  • know common frameworks and design patterns used in compiler construction,
  • know runtime representations of important programming constructs.

Some less tangible, but nevertheless important goals are:

  • Improving the understanding of programming languages,
  • understanding trade-offs between expressiveness, simplicity, and performance of programming languages,
  • experience the design and implementation of a software project where theory is essential for success.

The course and the tutorials are given in French. Three years go, this course was held in English. You can access the homepage of this former course here.

Note for Students of Section Systemes de Communication

Students from the Section Systemes de Communication who take the course Compilation of Section Informatique as a replacement of the discontinued course Compilation A will have to do all exercises and the project work up to and including week 8 of the course. They will be in addition assessed with an oral exam at the end of the semester which has as topics all course material presented in the first 8 weeks.

Lecturer: Prof. Martin Odersky

Course: Wednesday, 11:15-13:00, room INM 202
Exercises: Friday, 13:15-15:00, room INF 3

The course is managed via Sygeco2. Sygeco2 is a web-service that allows you to subscribe to the course, to set up working groups for the project, and to lookup grades you received during the course.

Sygeco2 uses your Camipro number and password for authentication. Access to Sygeco2 is restricted to EPFL. If you want to access it from outside of EPFL, you have to use VPN.

If you need help with Sygeco2 please contact one of the assistants. There is also a rather outdated manual (of which some parts do not apply to the current version anymore).


The aim of this project is to write a simple compiler for the programming language misc. The following documents provide details about misc:

Copy Policy

The grades of this course will be determined in part by a project which you undertake in a group of 2 or 3 people. It is perfectly OK (even encouraged) that members of one group exchange their code and read each others code. However, it is strictly not permitted to copy code from other groups or from previous years' projects (which are anyway different this year).

This year, all students will have to submit their projects electronically. We will test every submitted program part with copy detection software. If we detect two submissions which are essentially alike, we will question the concerned groups. If one can verify which group copied from the other, the copycat group will receive 0 points for that part of the exercise. If it cannot be verified who copied from whom, all concerned groups will receive 0 points. For that reason, it is very important that you protect the privacy of the code you have written.

Finally, a group which is found to have copied several times will fail the whole project.