Schedule

We will cover these topics:

  1. Overview of compilers: purpose, examples, phases of compilation, and intermediate representations.
  2. Formal language theory: Chomsky hierarchy, regular expressions, BNF grammars, and left factoring.
  3. Lexical analysis and parsing: bottom-up, top-down (recursive descent), look-ahead, parser generators including ANTLR.
  4. Tree representations and algorithms: parse tree, abstract syntax tree, homogeneous vs. heterogeneous node representation, traversals, visitor and listener patterns, pattern matching, and rewriting.
  5. Semantic analysis: type checking, type inference, type promotion, symbol tables, scopes, forward references, mutual and open recursion, strongly-connected components, and topological sort.
  6. Optimization of intermediate representation: three address code, SSA form, common sub-expression elimination, constant propagation, dead code elimination.
  7. Code generation and transformations toward target language: tail call elimination, closure conversion, instruction selection, register allocation.

The day-by-day schedule is shown below, including deadlines. You can import it into Google calendar or other apps using the ‘ics’ link to the right.

ics
Meeting (F2F) at 6 pm.
Meeting (F2F) at 6 pm.
Assignment 1 due at 23:59.
Meeting (Online) at 6 pm.
Assignment 2 due at 23:59.
Meeting (F2F) at 6 pm.
Assignment 3 due at 23:59.
Meeting (Online) at 6 pm.
Meeting (F2F) at 6 pm.
Assignment 4 due at 23:59.
Meeting (F2F) at 6 pm.
Assignment 5 due at 23:59.
Meeting (Online) at 6 pm.
Meeting (F2F) at 6 pm.
Meeting (F2F) at 6 pm.
Assignment 6 due at 23:59.
Meeting (F2F) at 6 pm.
Assignment 7 due at 23:59.
Meeting (Online) at 6 pm.
Meeting (F2F) at 6 pm.
Assignment 8 due at 23:59.