A large part of this course involves practical, graded work on assignments. You will work on the implementation of a Lisp-like language called L3. The implementation consists of two parts:

  • A compiler and interpreter written in Scala
  • A virtual machine written in C

There will be multiple assignments on the compiler side and one on the virtual machine. Some of the assignments are individual while others should be solved in groups of two students. You should form groups as soon as possible and annonce them to the TA. Once announced, a group may not be changed later. Assignments will build on top of each other and it’s the student’s duty to develop and improve their compiler from one assignment to the next.


The first step in submitting assignments is to let us know the groups. Please send in your decision to vlad dot ureche at epfl dot ch to receive an account for the assignment submission application.

Submission regulations

  • If you miss the submission deadline for a project, you still have the possibility to do a late hand-in of your work. For each day which lies between the deadline and your hand-in, the maximal amount of points you can achieve will drop by 20%. An example: if the deadline is April 22, 12:00, and you hand in your work on April 24, 09:00, you will get at most 60% of the maximal points for that project.
  • This year we will be using a virtual machine for assignment grading and development. You will also be able to install the tools on your own machine directly, but you should still test the assignment in the provided virtual machine before submission. More details in the Getting Started section.
  • Assignment Schedule

    The program will be updated in during the semester.


    Jump to:


    Are you interested in a Master or Semester Project in compilers?