Compilers


Spring 2026

Grace Hopper in 1952

Documents

Books

Project and Labs

  • The labs feed into the first part of your semester project and inform all of our exams. Get started by looking at Our Language Grammar. It would be cool to write your labs in Markdown.
  • Stop writing in pseudo code!
    • Lab 1: Making tokens with your Lexer
    • Lab 2: More token making, now with Finite Automata
    • Lab 3: Turning tokens into sentences with your Parser
    • Lab 4: Analyzing Grammars
    • Lab 5: Building Syntax Trees both Concrete and Abstract
    • Lab 5: Building Syntax Trees both Concrete and Abstract
    • Lab 6: Symbol tables and you (and your compiler)
    • Lab 7: Semantic Analysis: Checking scope and type
    • Lab 8: Generating Code
    • Lab 9: Manipulating Grammars
  • Semester Project, part one - A full compiler with 6502a code generation
  • Semester Project, part two - Optimizations, code rewriting, and more code generations

Examples

Notes

Resources

Wirth's original Pascal compiler on DEC tape

Articles

Past Project Hall of Fame

TypeScript and JavaScript projects only. There have been some fantastic projects in Rust, Scala, C++, Java, (and even Python once, but never again), and other languages, but they (obviously) will not execute in a web browser.
I reserve the copyright for all parts of my courses. Commercial reproduction of any course material, including lecture notes taken by students, without my EXPRESS WRITTEN consent, is prohibited. Seriously.