1. Course Syllabus
1.1. Course Prerequisites
1.2. Topics and Lectures
The list of topics below is a subject of possible minor changes.
Introductions Compilers, Interpreters, and OCaml
OCaml Crash Course: Translating Simple to OCaml
X86lite
C calling conventions
Intermediate Representations
Structured Data in the LLVM IR
Lexing: Regular Expressions and DFAs
Parsing I: Context Free Grammars
Mid-Term Break
Parsing II: LL(k) parsing, LR(0) parsing, LR(1) Parsing
Parsing III: Using Menhir
First-Class Functions, Lambda Calculus
Types I: Scope, Types, and Type Checking
Types II: Judgments and Derivations
Types III: Rich Types, Subtyping, Mutability
Optimisations: Dead Code Elimination, Constant Propagation
Data Flow Analysis, Lattices
Register Allocation, Graph Colouring
Current Research in PL Design and Implementation