Schedule
Table of contents
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