Schedule

January 21
Lesson 1: Welcome & Overview
January 23
Performance and Measurement (Adrian)
January 28
Lesson 2: Representing Programs
January 30
Lesson 3: Local Analysis & Optimization
February 4
Lesson 3: Local Analysis & Optimization
February 6
Lesson 4: Data Flow
February 11
Lesson 4: Data Flow
February 13
Lesson 5: Global Analysis
February 18 February break
February 20
Profiling (Simon, Noah Schiff, Kabir Samsi, Allen)
February 25
Lesson 6: Static Single Assignment
February 27
Lesson 6: Static Single Assignment
March 4
SSA (Neel, Dev Patel (dp673))
March 6
Lesson 7: LLVM
March 11
Automatic Verification (Annabel Baniak, Katherine Wu, Stephanie, Max)
March 13
Lesson 8: Loop Optimization
March 18
Lesson 9: Interprocedural Analysis
March 20
Lesson 10: Alias Analysis
March 25
Alias-Based Optimization (Michael Xing, Gerardo Teruel (gg525), Arnav Muthiayen)
March 27
Lesson 11: Memory Management
April 1 Spring break
April 3 Spring break
April 8
GC & Reference Counting (Ethan Gabizon, Parth Sarkar, Ernest Ng)
April 10
Fancy Memory Management (Bryant Park, David Han, Mariia Soroka, Lisa Li)
April 15
Lesson 12: Dynamic Compilers
April 17
Dynamic Languages (Serena Duncan, and Ananya Goenka)
April 22
Tracing (Ethan, Tean Lai (tml95))
  • 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 24
Superoptimization (Mark Barbone, Zihan Li, Sam Breckenridge)
April 29
Lesson 13: Concurrency & Parallelism
May 1
Lesson 14: Fast Compilers
May 6
Interactive Verification (Edmund, Jonah Bernard, Mahmoud Elsharawy)
May 13 Final project deadline (12pm)