This is the course website for SI413: Programming Languages and Implementation in Fall 2026.

This course is all about the design and implementation of programming languages. We will learn how to write and understand language specs, see multiple different programming language paradigms, and get our hands dirty writing interpreters and compilers for a progressively powerful series of languages that we design and build.

See the course policy for details on syllabus, grading, etc.

Last week

Monday 08/17
Class 1.1: Programming Languages
Wednesday 08/19
HW 1.1 due before class
Wednesday 08/19
Class 1.2: Language Specification
Friday 08/21
Lab 1.1: Specifications for language with Just Strings

This week

Monday 08/24
HW 1.2 due before class
Monday 08/24
Class 1.3: LLVM intro
Wednesday 08/26
Class 1.4: Scanning "by hand" in Java
Wednesday 08/26
Lab 1.1 due 23:59
Friday 08/28
Lab 1.2: Interpreter for a Just Strings language

Next week

Monday 08/31
HW 1.3 due before class
Monday 08/31
Class 1.5: LLVM IR and C code relationship
Wednesday 09/02
Class 2.1: Scanning
Wednesday 09/02
Lab 1.2 due 23:59
Friday 09/04
Lab 1.3: Compiler for Just Strings language