Computer Language Processing
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)|
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.
Week 03, September 30
Week 04, October 7
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|
- 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:
- lexical analyzer
- syntax analyzer
- name analyzer
- type checker
- code generator
- 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