Compiler Construction Winter 2020

This page contains the materials for the recitations and the home assignments. The main course webpage is here.

General Information

TA: Yotam Feldman
yotamfe1 AT (not tauex)
Office hour: Sundays 14-15 (via Zoom). Email me in advance.

Recitations take place on Thursdays 16-17 and 17-18 via Zoom; the link appears in the course's Moodle page.

The course's forum for questions about the material or home assignments is on Moodle.


We plan to cover the following topics (tentative - will be updated throughout the semester):

  1. MiniJava; Abstract Syntax Trees. [slides]
    Example Java program and its XML representation.
    AST XML schema. I use XMLPad for its visualization.
  2. Visitor design pattern; resolving method names. [slides]
    visitor interface; visitor for AST XML -> Java.
    ex1 announced; due 19/11/2020.
  3. Symbol tables and name resolution. [slides]
  4. LLVM. [slides]
  5. LLVM code generation. [slides]
    Arrays will be covered next week.
    ex2 announced; due 10/12/2020.
  6. LLVM arrays + object-oriented code generation. [slides]
  7. Semantic analysis; type checking. [slides]
  8. Definite initialization: static analysis. [slides]
    ex3 announced; due 30/12/2020.
  9. Lexical Analysis. [slides]
  10. Parsing & CUP. [slides]
  11. LR parsing conflicts. [slides] (updated)
    demo (new).
    ex4 announced; due 14/1/2021.
  12. x86 code generation; activation records. [slides]
  13. Exam rehearsal. [slides]
    LR question (new).

Home Assignments

There will be 4 programming assignments (aka "compiler project").

In the project, you will develop a compiler for MiniJava, a subset of Java, that will generate LLVM IR.
See the project page.