W | L | Date | Topic | Required Reading | Suggested Reading | Note |
---|---|---|---|---|---|---|
1 | 1 | 2013-01-08 | Introduction, parallel computers | Chapter 1 | Why computer science does not matter | Slides |
2 | 2013-01-10 | |||||
2 | 3 | 2013-01-15 | Scanning | Chapter 2 | Slides | |
4 | 2013-01-17 | Ruby review | Code examples | |||
3 | 5 | 2013-01-22 | Parsing | Chapter 3 | Slides | |
6 | 2013-01-24 | |||||
4 | 7 | 2013-01-29 | Automatic parser generation | |||
8 | 2013-01-31 | Context-sensitive analysis | Chapter 4 | Slides | ||
5 | 9 | 2013-02-05 | ||||
10 | 2013-02-07 | Intermediate representation | Chapter 5 | |||
6 | 11 | 2013-02-12 | ||||
12 | 2013-02-14 | Procedure abstraction | Chapter 6 | Using RubyWrite CACM article on software development | Slides | |
7 | 13 | 2013-02-19 | ||||
14 | 2013-02-21 | |||||
8 | 15 | 2013-02-26 | Supporting OO features | Chapter 6 | Slides, GCC VTables, Code examples | |
16 | 2013-02-28 | |||||
9 | 17 | 2013-03-05 | Scoping and casting complexities | Voufo's paper draft | Code examples | |
18 | 2013-03-07 | Code generation | LLVM assembly | Chapter 7 | ||
10 | 2013-03-12 | Spring break (no lecture) | ||||
2013-03-14 | Spring break (no lecture) | |||||
11 | 2013-03-19 | Mid-term exam (open book and notes) | ||||
19 | 2013-03-21 | Garbage collection | Guest lecture (slides) | |||
12 | 20 | 2013-03-26 | Intro to optimization | Chapter 8 | Slides | |
21 | 2013-03-28 | |||||
13 | 22 | 2013-04-02 | Data flow analysis | Chapter 9 | Acta Informatica paper, JACM paper | |
23 | 2013-04-04 | |||||
14 | 24 | 2013-04-09 | Dependence analysis | Chapter 2 of Allen and Kennedy | Slides | |
25 | 2013-04-11 | |||||
15 | 26 | 2013-04-16 | ||||
27 | 2013-04-18 | |||||
16 | 28 | 2013-04-23 | SSA translation, other optimizations, recap | Chapter 10 (except Section 10.3) | Section 10.3, SSA paper | |
2013-04-25 | Project presentations | |||||
17 | 2013-05-02 | Final exam (open book and notes) |
Unless noted otherwise, chapter and section numbers refer to the chapters and sections from the textbook. Some of the slides are in HTML, viewable in any standard browser. You must have Javascript enabled, which is usually enabled by default in most browsers. Navigate through the slides using arrow keys or PgUp and PgDn keys. You can toggle between slide-view and notes-view by pressing the key `t'. The slideshow should work on most modern browsers—it has been tested on Safari, Firefox, and Chrome.
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.