Stephen Freund, Fall 2026
This tutorial covers the principles and practices for the design and implementation of compilers and interpreters. Topics include all stages of the compilation and execution process: lexical analysis; parsing; symbol tables; type systems; scope; semantic analysis; intermediate representations; run-time environments and interpreters; code generation; program analysis and optimization; and garbage collection. The course covers both the theoretical and practical implications of these topics. As a project course, students will construct a full compiler for a simple object-oriented language.
Calendar
Week 0 (Sep 11)
Week 0 (Sep 11): Lab: Course Overview and Scala Crash Course
| Reading | |
|---|---|
| Friday Lab | Lab 0: A Scala Crash Course |
Week 1 (Sep 14)
Week 1 (Sep 14): Overview and Lexical Analysis
| Reading |
|
|---|---|
| Due Wednesday, Sep. 16 | Lab 0: A Scala Crash Course |
| Friday Meeting | HW 1 |
| Friday Lab | Lab 1: NFA Simulation |
Week 2 (Sep 21)
Week 2 (Sep 21): Lexical Analysis, Grammars, Top-Down Parsing
| Reading |
|
|---|---|
| Due Wednesday, Sep. 23 | Lab 1: NFA Simulation |
| Friday Meeting | HW 2 |
| Friday Lab | PA 1 |
Week 3 (Sep 28)
Week 3 (Sep 28): Grammars and Writing a Parser
| Reading |
|
|---|---|
| Due Wednesday, Sep. 30 | PA 1 |
| Friday Meeting | HW 3 |
| Friday Lab | Lab 2: A Calculator |
Week 4 (Oct 5)
Week 4 (Oct 5): Parsing IC, ASTs, and Symbol Tables
| Reading | |
|---|---|
| Due Wednesday, Oct. 7 | Lab 2: A Calculator |
| Friday Meeting | HW 4 |
| Friday Lab | PA 2 |
Week 5 (Oct 12)
Week 5 (Oct 12): PA 2 Work Week — reading period Oct 12–13
| Reading | Finish the Week 4 readings. |
|---|---|
| Friday Meeting |
Shoot for:
|
| Friday Lab | PA 2 |
Week 6 (Oct 19)
Week 6 (Oct 19): Scopes, Types, Type Checking
| Reading |
|
|---|---|
| Due Wednesday, Oct. 21 | PA 2 checkpoint (ASTs) |
| Friday Meeting |
HW 5
|
| Friday Lab | PA 2 |