This is an old revision of the document!
Computer Language Processing
CS-320, Edition 2019
Staff
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.
Monday | NO CLASSES |
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 grammar.epfl.ch) |
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 |
Thursday | Labs 06 and Labs 07 (if time allows) 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.
Grading
- 50% Quiz on 27 November 2019, 8am-10am in room CO 3 (individual work, paper and pen)
- 50% Projects:
- interpreter
- 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:
Reading
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
SCHEDULE
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