Compilers and Programming Languages

How languages are designed and how they are made to run. The theory of syntax, semantics and type systems on one side; the machinery of lexing, parsing, analysis and code generation that turns source into a running program on the other.

This subject course follows the topic vertically, across the years it spans. The lessons are still being written — each is shown as a placeholder.

Year 3 — Programming Languages

  1. Syntax and Semantics
  2. Paradigms Overview
  3. Type Systems
  4. Type Inference
  5. The Lambda Calculus
  6. Evaluation Strategies
  7. Building an Interpreter
  8. Memory Management and Garbage Collection

Year 3 — Compilers

  1. Compiler Phases Overview
  2. Lexical Analysis
  3. Context-Free Grammars and Parsing
  4. Top-Down and Bottom-Up Parsing
  5. Abstract Syntax Trees
  6. Semantic Analysis and Symbol Tables
  7. Intermediate Representation
  8. Code Generation
  9. Optimization Passes