August 22
Lesson 1: Welcome & Overview
August 24
Performance and Measurement (Adrian)
August 29
Lesson 2: Representing Programs
August 31
Lesson 3: Local Analysis & Optimization
September 5
Lesson 3: Local Analysis & Optimization
September 7
Lesson 4: Data Flow
September 12
Lesson 4: Data Flow
September 14
Lesson 5: Global Analysis
September 19
Profiling (Bennett Wineholt)
September 21
Lesson 6: Static Single Assignment
September 26
Lesson 7: LLVM
September 28
Automatic Verification (Benjamin Carleton, Surendra Ghentiyala)
October 3
Lesson 8: Loop Optimization
October 5
Lesson 9: Interprocedural Analysis
October 10 Fall break
October 12
Lesson 10: Alias Analysis
October 17
Alias-Based Optimization (Kei Imada, Jan-Paul Ramos, Ryan Mao, Albert Xiao)
October 19
Lesson 11: Memory Management
October 24
GC & Reference Counting (Omkar Bhalerao, Sanjit Basker, Justin Ngai, Melinda Fang)
October 26
Fancy Memory Management (Evan, Andy, Emily)
October 31
Lesson 12: Dynamic Compilers
November 2
Dynamic Languages (Benny Rubin, Collin Zhang, Alice Sze)
November 7
Tracing (Vivian Ding and William Wang and Enoch Chen)
  • 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.
November 9
Lesson 13: Program Synthesis
November 14
Synthesis-Aided Compilers (Yixiao Du and Matthew Hofmann)
November 16 Guest Lecture by Thierry Lavoie, Oracle
November 21
Lesson 14: Concurrency & Parallelism
November 23 Thanksgiving
November 28
Compiler Frameworks (John Rubio, Arjun Shah, Jiahan Xie)
November 30
Interactive Verification (Zak, Stephen V, Ali)
December 11 Final project deadline (4:30pm)