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.

Week 01, September 14

Mon: Lecture 01: Introduction: Intro to CLP (slides), Formal Languages (slides)
Wed/Thu: Labs Setup and Labs 01 (Interpreter) Intro (Physically & Discord) Zoom
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 (Physically & Discord)

Roadmap (precise content and dates might change)

Week 03, September 28
Mon: Lecture 03: Automata
Wed/Thu: Labs 02 (Lexer) (Physically & Discord)
Wed: DEADLINE Submit the interpreter lab (Labs 01).
Week 04, October 5
Mon: Lecture 04: Context-Free Grammars
Wed/Thu: Labs 03 (Parser) Intro (Physically & Discord)
Wed: *DEADLINE* Submit the lexer lab (Labs 02).
Week 05, October 12
Mon: Lecture 05: Parsing General Grammars
Wed/Thu: Labs 03 (Parser) (Physically & Discord)
Week 06, October 19
Mon: Lecture 06: Name Analysis and Intro to Type Checking
Wed/Thu: Labs 04 (Type Checker) Intro (Physically & Discord)
Week 07, October 26
Mon: Lecture 07: Type Soundness
Wed/Thu: Labs 04 (Type Checker) (Physically & Discord)
Wed: *DEADLINE* Submit the parser lab (Labs 03).
Week 08, November 2
Mon: Lecture 08: Type Inference and Code Generation Part 1
Wed/Thu: Labs 05 (Codegen) Intro (Physically & Discord)
Week 09, November 9
Mon: Lecture 09: Compiling Expressions, Compiling Control
Wed/Thu: Labs 05 (Codegen) (Physically & Discord)
Wed: *DEADLINE* Submit the type checker lab (Labs 04).
Week 10, November 16
Mon: Lecture 10: Compilation with Jump Destinations. Registers
Wed/Thu: Labs 06 (Compiler Extension) Intro (Physically & Discord)
Sun: *DEADLINE* Submit preferences for your group's compiler extension topic.
Week 11, November 23
Mon: ??? (used to be review of old quiz)
Wed/Thu: Labs 05 (Codegen) (Physically & Discord)
Wed: *ANNOUNCE* Compiler extension project assignment
Week 12, November 30
Mon: Lecture 11: Dataflow Analysis
Wed/Thu: Labs 06 (Compiler Extension) (Physically & Discord)
Wed: *DEADLINE* Submit the codegen lab (Labs 05).
Week 13, December 7
Mon: Lecture 12: Initialization and Liveness Analysis. Overview of High-Level Features
Wed/Thu: Labs 06 (Compiler Extension) Presentations (Physically & Discord)
Week 14, December 14
Mon: ??? (used to be extension project presentations)
Wed/Thu: Labs 06 (Compiler Extension) (Physically & Discord)


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