Schedule

Table of contents
  1. Changelog
  2. Calendar
  3. List of topics

Changelog

  • 2/11/25: Changed recitation location on TR from 32-124 to 32-155.

Calendar

The lectures and recitations are one hour long and take place:

  • In 32-123 at 11 a.m. on Mondays, Wednesdays, and Fridays.
  • In 32-155 at 12 p.m. (noon) on Tuesdays and Thursdays. (While these are listed officially as “recitations,” we treat them the same as lectures.)
  Monday Tuesday Wednesday Thursday Friday
02/03 - 02/07 First day of classes
L1: Intro, R0: Info
L2: Regex L2: Regex L3: Parsing Phase 1 released
R1: Phase 1
02/10 - 02/14   R2: Hand-Written Parser L4: IR L4: IR R3: Parser Generators
02/17 - 02/21 Presidents’ Day Holiday Monday schedule
L5: Semantics
Team submission
L5: Semantics
  Phase 1 due
Phase 2 released
R4: Phase 2
02/24 - 02/28 L6: Codegen L6: Codegen L6: Codegen   R5: SSA
03/03 - 03/07       R6: Control Flow Graphs Add date
Phase 2 due
Phase 3 released
R7: Phase 3
03/10 - 03/14     Quiz 1 Review   Quiz 1
03/17 - 03/21   L7: Optimization L8: Dataflow L8: Dataflow  
03/24 - 03/28 Spring Break Spring Break Spring Break Spring Break Spring Break
03/31 - 04/04 L9: Loop Optimizations L10: Register Allocation L11: Parallelization L12: Dataflow Theory Phase 3 due
Phase 4 released
R9: Phase 4
04/07 - 04/11         R10: Register Allocation
04/14 - 04/18 L12: Dataflow Theory L12: Dataflow Theory L11: Parallelization L13: Memory Optimization
CPW
Phase 4 due
Phase 5 released
CPW
R11: Phase 5
04/21 - 04/25 Patriots’ Day Holiday Drop Date      
04/28 - 05/02     Quiz 2 Review Guest Lecture
Yaron Minsky
(Jane Street)
Quiz 2
05/05 - 05/09          
05/12 - 05/16 Phase 5 due Last day of classes
Complier Derby
     

List of topics

  • Parsing
    • Regular expressions
    • Deterministic and non-deterministic finite automata
    • Context-free grammars
    • Parse trees
    • Recursive descent parser
    • Parser construction
  • Intermediate representations
    • Object-oriented programming
    • Symbol tables
    • Semantic analysis
  • Unoptimized code generation
    • Control flow graph
    • Linearizing
    • Short circuiting
    • Assembly code
    • Procedure calls and stack management
    • Peephole optimizations
  • Program analysis and optimizations
    • Value numbering
    • Common sub-expression elimination
    • Copy propagation
    • Constant propagation
    • Dead code elimination
    • Strength reduction
    • Algebraic simplification
  • Register allocation
    • Def-use chains
    • Web-based register allocation
    • Interference graphs
    • Liveness analysis
    • Graph coloring with Chaitin’s Algorithm
    • Spilling and splitting
  • Parallelization
    • Data dependence analysis
    • Induction variables
  • Data-flow analysis foundations
    • Order theory and lattices
    • Fixed point iteration