1. Course Syllabus and Grading Schema

1.1. Course Prerequisites

1.2. Grading Schema

  • Homework Projects 1-6: 60%

  • Final Exam: 40%

1.3. Topics and Lectures

The list of topics below is a subject of possible minor changes.

  • Introduction to 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