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, updated 26.11) 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 04 in INF 213: Exercise sheet (Solutions) (see also
Thursday Labs 03 in INF 119

Week 06, October 21

Monday Lecture 06 in CE1 100: Name Analysis and Intro to Type Checking
Wednesday Exercises 05 in INF 213: Exercise sheet (Solutions)
Thursday Labs 04 in INF 119

Week 07, October 28

Monday Lecture 07 in CE1 100: Type Soundness
Wednesday Exercises 06 in INF 213: Exercise sheet (Solutions)
Thursday Labs 04 in INF 119

Week 08, November 4

Monday Lecture 08 in CE1 100: Type Inference and Code Generation Part 1
Wednesday Exercises 07 in INF 213: Exercise sheet (Solutions)
Thursday Labs 05 in INF 119

Week 09, November 11

Monday Lecture 09 in CE1 100: Compiling Expressions, Compiling Control
Wednesday Exercises 08 in INF 213: Exercise sheet (Solutions)
Thursday Labs 05 in INF 119

Week 10, November 18

Monday Lecture 10 in CE1 100: Compilation with Jump Destinations. Registers
Wednesday Exercises 09 in INF 213: Exercise sheet
Thursday Labs 05 and Labs 06 in INF 119

Week 11, November 25

Monday Exercises: discussion of Quiz 2017 (solutions) and Quiz 2018 (solutions)
Wednesday (27.11) Quiz 8am-10am in room CO 3: Solutions
Thursday Labs 06 and Labs 07 (if time permits) in INF 119

Week 12, December 2

Monday Lecture: Dataflow Analysis Part 1
Wednesday Quiz Solutions in INF 213
Thursday Labs 07 in INF 119

Week 13, December 9

Week 14, December 17

Monday Extension Project Presentations 1
Wednesday Extension Project Presentations 2
Thursday Extension Project Presentations 3

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