W L Date Topic Required Reading Suggested Reading Note
112009-08-31Course agenda, policies, parallel computersWhy computer science does not matterSlides
22009-09-02Introduction to compilersChapter 1Memory consistency paper (a cleaner copy)Slides
232009-09-07ScanningChapter 2Slides
42009-09-09ParsingChapter 3C++ templates are Turing complete, Parsing expression grammarsSlides
352009-09-14
62009-09-16
472009-09-21Context sensitive analysisChapter 4Slides
82009-09-23Procedure abstractionSections 5.1-5.4, 5.7, Chapter 6 (except Sections 6.3.3 and 6.7)Slides
592009-09-28OO SupportSections 6.3.3, 7.10, WUSTL notes, Ruby notesWhy's Poignant Guide to Ruby, Chapter 7Slides
102009-09-30
6112009-10-05Introduction to optimizationChapter 8Slides
122009-10-07
7132009-10-12Data flow analysisSections 9.1, 9.2Monotone data flow analysis frameworks
142009-10-14
8152009-10-19SSASections 9.3-9.5, Sections 1-5 from the SSA paperSSA is functional programming, Global data flow analysis and iterative algorithmsEfficiently computing SSA, Slides
162009-10-21
92009-10-26Midterm Exam (Open book / notes / papers, closed everything else)
172009-10-28Constant propagation (again)Constant propagation paper (up to Section 3)Slides
10182009-11-02Dependence analysisChapter 2 of Allen and Kennedy bookNotes
192009-11-04
11202009-11-09Dependence testingNotes
212009-11-11Loop transformationsChapter 4 of Allen and Kennedy book, Wolf and Lam's unimodular paperCompiler transformations for HPCNotes
12222009-11-16Scalar OptimizationsChapter 10Slides
232009-11-18Type Inference in Scheme (by Michael Adams)
13242009-11-23Optimizations for register useSections 8.1-8.5 of Allen and Kennedy book
2009-11-25Thanksgiving break
14252009-11-30Optimizing high-level languages (by Andy Keep)Tracemonkey paperSlides
262009-12-02Memory-hierarchy optimizations and open problemsSections 9.1-9.3 of Allen and Kennedy bookSlides
15272009-12-07
282009-12-09Recap and evals
162009-12-18Final Exam (Open book / notes / papers, closed everything else), Fri, 02:45-04:45 pm

Unless noted otherwise, chapter and section numbers refer to the chapters and sections from the textbook.

Overview of the schedule

  1. Introduction (1 lecture)
  2. Parallel Computers (1 lecture)
  3. Scanning and Parsing (1 lecture)
  4. Dataflow analysis and traditional optimizations (6 lectures)
  5. SSA—Static Single Assignment and its applications (3 lectures)
  6. Dependence analysis (4 lectures)
  7. Scripting languages, virtual machines (3 lectures)
  8. Handling Object-oriented and Dynamic Features (6 lectures)
  9. Advanced topics, such as compiling advanced language constructs, type inference, dynamic compilation, etc. (2 lectures)

Note: The number of lectures indicated in the parentheses are approximate and only provided to give you an idea of the extent of coverage of a particular topic. The actual number of lectures devoted to a topic may vary.