Schedule

September 2
Lesson 1: Welcome & Overview
September 7
Performance and Measurement (Adrian)
September 9
Lesson 2: Representing Programs
September 14
Lesson 3: Local Analysis & Optimization
September 16
Lesson 3: Local Analysis & Optimization
September 21
Lesson 4: Data Flow
September 23
Lesson 4: Data Flow
September 28
Lesson 5: Global Analysis & SSA
September 30
Profiling (Ted Bauer)
October 5
Lesson 5: Global Analysis & SSA
October 7
Lesson 6: LLVM
October 12
Automatic Verification (Goktug Saatcioglu & Samwise Parkinson)
October 14 Fall break
October 19
Lesson 7: Loop Optimization
October 21
Lesson 8: Interprocedural Analysis
October 26
Lesson 9: Alias Analysis
October 28
Alias-Based Optimization (Kenneth Li)
November 2
Lesson 10: Memory Management
November 4
GC & Reference Counting (Mark Moeller)
November 9
Modern GC (Patrick LaFontaine)
November 11
Lesson 11: Dynamic Compilers
Dynamic Languages (Evan Adler)
November 16 Semi-Finals Study Period
November 18 Semi-Finals
November 23 Semi-Finals
November 25 Thanksgiving break
November 30
Superoptimization (Socrates Wong)
  • Classes go all-virtual
December 2
Synthesis-Aided Compilers (Jie Liu)
Tracing (Will Smith)
  • Trace-Based Just-in-Time Type Specialization for Dynamic Languages
    Andreas Gal, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat, Blake Kaplan, Graydon Hoare, Boris Zbarsky, Jason Orendorff, Jesse Ruderman, Edwin W. Smith, Rick Reitmaier, Michael Bebenita, Mason Chang, and Michael Franz. PLDI 2009.
December 7
Lesson 13: Concurrency & Parallelism
December 9
Vectorization (Ankush Rayabhari)
December 14
Safe Parallelism (Hanchen Jin, Xinwen Wang)
December 16
Interactive Verification (Priya Srikumar)
December 18 Final project due (no class)