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 09/21
HW 2.2 due before class
Monday 09/21
Class 2.4: Bottom-up parsing
Wednesday 09/23
Class 2.5: Using ANTLR and Maven (MEET IN LAB ROOM)
Wednesday 09/23
Lab 2.1 due 23:59
Friday 09/25
Lab 2.2: Interpreter for a StringBoolVar language

This week

Monday 09/28
Class 2.6: Introducing the Scheme language
Wednesday 09/30
HW 2.3 due before class
Wednesday 09/30
Class 2.7: Functional programming
Wednesday 09/30
Lab 2.2 due 23:59
Friday 10/02
Lab 2.3: Compiler for a StringBoolVar language

Next week

Monday 10/05
Class 3.1: Abstract Syntax Trees
Wednesday 10/07
Class 3.2: Introduction to Rust
Wednesday 10/07
Lab 2.3 due 23:59
Friday 10/09
Lab 3.1: Spec and Interpreter for an Iffy Language