W | L | Date | Topic | Required Reading | Suggested Reading | Note |
---|---|---|---|---|---|---|
1 | 1 | 2009-08-31 | Course agenda, policies, parallel computers | Why computer science does not matter | Slides | |
2 | 2009-09-02 | Introduction to compilers | Chapter 1 | Memory consistency paper (a cleaner copy) | Slides | |
2 | 3 | 2009-09-07 | Scanning | Chapter 2 | Slides | |
4 | 2009-09-09 | Parsing | Chapter 3 | C++ templates are Turing complete, Parsing expression grammars | Slides | |
3 | 5 | 2009-09-14 | ||||
6 | 2009-09-16 | |||||
4 | 7 | 2009-09-21 | Context sensitive analysis | Chapter 4 | Slides | |
8 | 2009-09-23 | Procedure abstraction | Sections 5.1-5.4, 5.7, Chapter 6 (except Sections 6.3.3 and 6.7) | Slides | ||
5 | 9 | 2009-09-28 | OO Support | Sections 6.3.3, 7.10, WUSTL notes, Ruby notes | Why's Poignant Guide to Ruby, Chapter 7 | Slides |
10 | 2009-09-30 | |||||
6 | 11 | 2009-10-05 | Introduction to optimization | Chapter 8 | Slides | |
12 | 2009-10-07 | |||||
7 | 13 | 2009-10-12 | Data flow analysis | Sections 9.1, 9.2 | Monotone data flow analysis frameworks | |
14 | 2009-10-14 | |||||
8 | 15 | 2009-10-19 | SSA | Sections 9.3-9.5, Sections 1-5 from the SSA paper | SSA is functional programming, Global data flow analysis and iterative algorithms | Efficiently computing SSA, Slides |
16 | 2009-10-21 | |||||
9 | 2009-10-26 | Midterm Exam (Open book / notes / papers, closed everything else) | ||||
17 | 2009-10-28 | Constant propagation (again) | Constant propagation paper (up to Section 3) | Slides | ||
10 | 18 | 2009-11-02 | Dependence analysis | Chapter 2 of Allen and Kennedy book | Notes | |
19 | 2009-11-04 | |||||
11 | 20 | 2009-11-09 | Dependence testing | Notes | ||
21 | 2009-11-11 | Loop transformations | Chapter 4 of Allen and Kennedy book, Wolf and Lam's unimodular paper | Compiler transformations for HPC | Notes | |
12 | 22 | 2009-11-16 | Scalar Optimizations | Chapter 10 | Slides | |
23 | 2009-11-18 | Type Inference in Scheme (by Michael Adams) | ||||
13 | 24 | 2009-11-23 | Optimizations for register use | Sections 8.1-8.5 of Allen and Kennedy book | ||
2009-11-25 | Thanksgiving break | |||||
14 | 25 | 2009-11-30 | Optimizing high-level languages (by Andy Keep) | Tracemonkey paper | Slides | |
26 | 2009-12-02 | Memory-hierarchy optimizations and open problems | Sections 9.1-9.3 of Allen and Kennedy book | Slides | ||
15 | 27 | 2009-12-07 | ||||
28 | 2009-12-09 | Recap and evals | ||||
16 | 2009-12-18 | Final 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
- Introduction (1 lecture)
- Parallel Computers (1 lecture)
- Scanning and Parsing (1 lecture)
- Dataflow analysis and traditional optimizations (6 lectures)
- SSA—Static Single Assignment and its applications (3 lectures)
- Dependence analysis (4 lectures)
- Scripting languages, virtual machines (3 lectures)
- Handling Object-oriented and Dynamic Features (6 lectures)
- 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.