Schedule

January 25
Lesson 1: Welcome & Overview
January 27
Performance and Measurement (Adrian)
February 1
Lesson 2: Representing Programs
February 3
Lesson 3: Local Analysis & Optimization
February 8
Lesson 3: Local Analysis & Optimization
February 10
Lesson 4: Data Flow
February 15
Lesson 4: Data Flow
February 17
Lesson 5: Global Analysis
February 22
Profiling (Niansong Zhang, Jiajie Li)
February 24
Lesson 6: Static Single Assignment
March 1 February break
March 3
Lesson 7: LLVM
March 8
Automatic Verification (Aaron Tucker)
March 10
Lesson 8: Loop Optimization
March 15
Lesson 9: Interprocedural Analysis
March 17
Lesson 10: Alias Analysis
March 22
Alias-Based Optimization (Andrew Butt, Andrey Yao)
March 24
Lesson 11: Memory Management
March 29
GC & Reference Counting (Michael Maitland and Orko Sinha)
March 31
Modern GC (Shubham Chaudhary and Ayaka Yorihiro)
April 5 Spring break
April 7 Spring break
April 12
Lesson 12: Dynamic Compilers
April 14
Dynamic Languages (Charles Sherk)
April 19
Tracing (Yulun Yao)
  • 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.
April 21
Lesson 13: Program Synthesis
April 26
Superoptimization (Victor Giannakouris and Jonathan Tran)
April 28
Synthesis-Aided Compilers (Hongzheng Chen)
May 3
Lesson 14: Concurrency & Parallelism
May 5
Safe Parallelism (Nikita Lazarev and Susan Garry)
May 10
Interactive Verification (Anshuman Mohan and Alaia Solko-Breslin)
May 19 Final project due (no class)