CPSC 411 2021w2 – Introduction to Compiler Construction
The goal of this course is to give students experience designing, implementing, and extending programming languages. Students will start from a machine language, the x86-64 CPU instruction set with Linux system calls (x64), and incrementally build a compiler for a subset of Racket to this machine language. In the process, students will practice building, extending, and maintaining a complex piece of software, and practice creating, enforcing, and exploiting abstractions formalized in programming languages.
The course assumes familiarity with basic functional programming in Racket, and some simple imperative programming in assembly.
The source and materials for this course are publically available on GitHub, except for the reference solution. Please report bugs, typos, etc at in the relevant repository:
Support package - https://github.com/cpsc411/cpsc411-pub
Interrogator - https://github.com/cpsc411/cpsc411-interrogator
Skeletons and dockerfile - https://github.com/cpsc411/cpsc411-skeletons
Reference solution and private libraries - https://github.com/cpsc411/cpsc411-priv-issues