Computer Language Processing

CS-320, Edition 2020. Videos, Coursebook, Discord, Moodle

Implement a programming language! All project based.

Note that the entire grade is based on project work, which has many aspects: the implementation in Scala, a written report, oral presentation and answers to questions in presentation and throughout the semester. There will be no written exam.

The Monday slot will focus on lecture material. The remaining slots will focus on labs. We will always provide some online version of the activity. So far, as long as there is demand, the plan is to also be present in the physical room as scheduled.

When a lecture is pre-recorded, the instructor will not repeat it, but will instead answer any questions from the physically present and remote students.

The material we cover will be similar to last year.

Lectures & Labs

Please watch the videos for each week ahead of time. During the Monday slot we will typically have time to answer questions about the current lecture. Wednesday and Thursday slots will typically be dedicated to the current project, with teaching assistants present physically and/or on Discord.

Note: for regular expressions and context-free languages, a more detailed explanation can also be found in wonderful videos for the Theory of Computation Course by Prof. Harry H. Porter III.

Week 01, September 14

Mon: Lecture 01: Introduction: Intro to CLP (slides), Formal Languages (slides)
Wed/Thu: Labs Setup and Labs 01 (Interpreter) Intro Zoom (TAs Physically & Discord)
Fri: DEADLINE Organize into groups of 4 students.

Please make sure you have logged in on EPFL's GitLab at least once. One member of your group should then register via this form. We will give you access to your group's repository on the EPFL GitLab.

Week 02, September 21

Mon: Monday is holiday, but watch this week: Operations on Languages (slides) and Regular Expressions and Lexers (slides)
Wed/Thu: Labs 02 (Lexer) Intro Zoom (TAs Physically & Discord)

Week 03, September 28

Mon: Lecture 03: First Symbols and Construction of Lexical Analyzer (slides), From Regular Expressions to Automata (slides)
Wed/Thu: Labs 02 (Lexer) (Physically & Discord; Discord only on Thu)
Wed: DEADLINE Submit the interpreter lab (Labs 01).

Week 04, October 5

Mon: Lecture 04: Introduction to Grammars (slides), Syntax Trees (slides), LL(1) Parsing (slides)
Wed/Thu: Labs 03 (Parser) Intro Zoom (TAs Physically & Discord)
Wed: DEADLINE Submit the lexer lab (Labs 02).

Week 05, October 12

Mon: Lecture 05: CYK Algorithm for Parsing General Grammars and Chomsky Normal Form Transformation (slides)
Wed/Thu: Labs 03 (Parser) (Physically & Discord)

Week 06, October 19

Week 07, October 26

Mon: Lecture 07: Types and Soundness: Inductive Relations, Operational Semantics (slides, Types, Progress, Preservation (annotated slides)
Wed/Thu: Labs 04 (Type Checker) (Discord)
Wed: DEADLINE Submit the parser lab (Labs 03).

Week 08, November 2

Mon: Lecture 08: Type Inference (slides, annotated)
Wed/Thu: Labs 05 (Codegen) (Discord)

Week 09, November 9

Mon: Lecture 09: Code Generation: WebAssembly (PDF), Expressions (PDF), Simple If (PDF)
Wed/Thu: Labs 05 (Codegen) Intro (Discord)
Wed: DEADLINE Submit the type checker lab (Labs 04).

Week 10, November 16

Mon: Lecture 10: Translating Control with Destination Parameters (slides, annotated)
Wed: Labs 05 (Codegen) (Discord)
Thu: Labs 06 (Compiler Extension) Zoom Intro (Discord)
Sun: DEADLINE Submit preferences for your group's compiler extension topic.

Week 11, November 23

Mon: Register Machines (slides) and Register Allocation (slides)
Mon: ANNOUNCE Compiler extension project assignment
Wed/Thu: Labs 06 (Compiler Extension) (Discord)

Week 12, November 30

Mon: Guest Lecture by Dr. Manos Koukoutos, Google (PhD EPFL)
Wed/Thu: Labs 06 (Compiler Extension) (Discord)
Wed: DEADLINE Submit the codegen lab (Labs 05).

Week 13, December 7

Mon: Talk by Dr. Aleksandar Prokopec, Oracle Labs (PhD, EPFL)
Wed/Thu: Labs 06 (Compiler Extension) (Discord)

Week 14, December 14

Compiler Extension Presentations: Instructions, Schedule
Mon: Labs 06 (Compiler Extension) (Presentations) Zoom #1
Wed: Labs 06 (Compiler Extension) (Presentations) Zoom #2
Thu: Labs 06 (Compiler Extension) (Presentations) Zoom #3


The final grades will be computed based on projects:

  • 12.5% Lab 1
  • 12.5% Lab 2
  • 12.5% Lab 3
  • 12.5% Lab 4
  • 12.5% Lab 5
  • 37.5% Lab 6 (Compiler extension, customized)


Instructor Viktor Kunčak
PhD Assistants Georg S. Schmid
MSc Assistants Antoine Brunner, Alexandre Pinazza
Secretary Sylvie Jankow