1. Course Syllabus and Grading Schema¶
1.1. Course Prerequisites¶
YSC2229: Introductory Data Structures and Algorithms or any equivalent class
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