Computer Language Processing


Instructor Viktor Kunčak
PhD Assistants Georg S. Schmid and Romain Edelmann
MSc Assistants Julie Giunta, Maxime Kjaer, Louis Vialar, Rémi Coudert
Secretary Sylvie Jankow

Week 01, September 16

Please note the unusual schedule the first week. The second week schedule is more typical.

Wednesday Lecture 01 in INF 213. Lecture 01 Slides and Scala definitions
Thursday Labs Setup and Labs 01 in INF 119 (always bring own laptops)

Wikipedia articles:

You may also wish to check the Gobble Gook video, which relates the subtle difference between compilers and interpreters to the familiar everyday situation of landing on an alien planet.

Week 02, September 23

We will generally have exercises on Wednesdays and labs on Thursdays, but please always check the schedule here for up to date information.

Monday Lecture 02 in CE1 100 and Scala definitions
Wednesday Exercises 01 in in INF 213. (Solutions)
Thursday Labs 01 and Labs 02 in INF 119

Week 03, September 30

Monday Lecture 03 in CE1 100: automata (also with annotations)
Wednesday Exercises 02 in in INF 213: Exercise sheet (Solutions) and slides
Thursday Labs 02 in INF 119

Week 04, October 7

Monday Lecture 04 in CE1 100: Context-Free Grammars (with annotations)
Wednesday Exercises 03 in INF 213: Exercise sheet (Solutions) and slides
Thursday Labs 03 in INF 119

Week 05, October 14

Monday Lecture 05 in CE1 100: Parsing General Grammars (also with annotations)
Wednesday Exercises 03 in INF 213
Thursday Labs 03 in INF 119

Contact Hours

  • 2 x 45min lectures: theoretical material
  • 2 x 45min exercises: solve problems
  • 2 x 45min labs: instructions and help for work on the project

Post any remaining questions on Moodle forum (see link on top of the page); ask us for office hours when needed.


  • 50% Quiz on 27 November 2019, 8am-10am in room CO 3 (individual work, paper and pen)
  • 50% Projects:
    1. interpreter
    2. lexical analyzer
    3. syntax analyzer
    4. name analyzer
    5. type checker
    6. code generator
    7. build and present your own compiler extension

For the project you build a compiler in Scala, based on our templates. The first six parts are done individually and are worth 6.25% whereas the final part (own compiler extension) is done in groups of up to 3 students and is worth 12.5% (the scope of the last projects is four times the others, since it is worth double and done in a group). We have an automated grading system and also provide feedback based on manual source code review.

All project assignments will be in Scala. If you do not know Scala, please complete these free EPFL Courseware courses as soon as possible:


A useful textbook for this course: Andrew W. Appel, Jens Palsberg: Modern Compiler Implementation in Java (2nd Edition). Cambridge University Press, 2002, available through EPFL library

We do not strictly follow it:

  • we program in Scala instead of Java
  • we thus use pattern matching instead of the visitor pattern
  • we use only LL1 parsing using parsing combinators


The typical week schedule is:

  • Monday from 13:15 to 15:00: Lecture in CE1100
  • Wednesday from 8:15 to 10:00: Exercises in INF213
  • Thurday from 8:15 to 10:00: Labs in INF119

Last year's edition: 2018

Attribution-ShareAlike 2.5 Generic (CC BY-SA 2.5) Creative Commons Licence