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 10/12
Columbus Day Holiday
Wednesday 10/14
HW 3.1 due before class
Wednesday 10/14
Class 3.3: Rust compile-time memory management: ownership and borrowing
Friday 10/16
Midterm exam

This week

Monday 10/19
Class 3.4: Memory management in LLVM with alloca/load/store and malloc/free
Wednesday 10/21
Class 3.5: LLVM basic blocks and branching
Wednesday 10/21
Lab 3.1 due 23:59
Friday 10/23
Lab 3.2: Compiler for Iffy language

Next week

Monday 10/26
HW 3.2 due before class
Monday 10/26
Class 4.1: Closures and lambdas in Scheme and elsewhere
Wednesday 10/28
Class 4.2: Frames and closures
Wednesday 10/28
Lab 3.2 due 23:59
Friday 10/30
Lab 4.1: Syntax for a functional language