Chapter numbers refer to the chapters from the book Enginnering a Compiler by Keith Cooper and Linda Torczon.

W L Date Topic Required Reading Suggested Reading Comments
1 1 2006-01-10 Course agenda, policies, introduction to compilers Backus's Fortran paper   Notes
2 2006-01-12 Modern machines and programming models   Adve's memory consistency paper Notes to come; Assignment 1 out
2 3 2006-01-17 Dependence Analysis     Notes
4 2006-01-19 Dependence Analysis (contd.)     Notes
3 5 2006-01-24 Dependence Analysis (contd.)     Notes
6 2006-01-26 Introduction to Compilers Chapter 1    
4 7 2006-01-31 Lexical Analysis Chapter 2, except Section 2.4 Section 2.4 Assignment 2 out
8 2006-02-02 Parsing Chapter 3, except Sections 3.5, 3.7 Section 3.5 Assignment 2 Phase II out
5 9 2006-02-07 Syntax-directed Translation Chapter 4    
10 2006-02-09 Handling Procedure Abstraction Sections 5.3, 5.7, 6.1-6.6, 7.9   Assignment 2 Phase III out
6 11 2006-02-14 Some issues in implementing OO languages Sections 7.1-7.2, 7.5-7.7, 7.10    
12 2006-02-16 Intro. to Optimization, Value Numbering Sections 8.1-8.3    
7 13 2006-02-21 Global Redundancy Elimination Sections 8.4-8.6, Cooper and Simpson's paper   Assignment 3 out
14 2006-02-23 Dataflow Analysis Sections 9.1-9.2    
8 15 2006-02-28 Iterative Solvers   Iterative Algorithms, Monotone Frameworks  
16 2006-03-02 Non-iterative Solvers Section 9.4.1, Kennedy survey chapter except graph grammars, SSA is functional programming a pre-print version of the survey Notes
9 17 2006-03-07 SSA Section 9.3, Up to Section 4 of the Cytron et al. SSA paper   Notes
18 2006-03-09 Mid-term    
    2006-03-14 Spring Break
  2006-03-16
10 19 2006-03-21 SSA Section 4 of the Cytron et al. SSA paper    
20 2006-03-23 SSA Section 9.3, Section 5 of the Cytron et al. SSA paper Paper by Briggs et al. highlighting the lost-copy and swap problems  
11 21 2006-03-28 Constant Propagation Until Section 5 of Wegman & Zadeck    
22 2006-03-30 Global value numbering Cooper & Simpson  
12 23 2006-04-04 Partitioning-based approach Alpern et al.   Assignment 4 out
24 2006-04-06 Array SSA Knobe and Sarkar    
13 25 2006-04-11 Dependence testing     Notes
26 2006-04-13 Dependence testing   Bill Pugh's Omega test Notes
14 27 2006-04-18 Loop Transformations Allen & Kennedy, Chapter 5 (except 5.4 and 5.5) Pugh's uniform techniques Notes
28 2006-04-20 Compiling HPF Allen & Kennedy, Chapter 14; paper on productivity
15 29 2006-04-25 Recap     class in LH 215D; slides
30 2006-04-27 Project presentations   class in LH 215D

Overview of the schedule

  1. Introduction (1 lecture)
  2. Theoretical bases of compilers (2 lectures)
  3. Scanning and Parsing (1 lecture)
  4. Dataflow analysis (6 lectures)
  5. SSA—Static Single Assignment and its applications (3 lectures)
  6. Dependence analysis (4 lectures)
  7. Automatic parallelization (6 lectures)
  8. Advanced topics, such as compiling advanced language constructs, type inference, dynamic compilation, etc. (2 lectures)

Programming Assignment Coverage

  1. Front-end: Building Parse Tree and Control Flow Graph
  2. SSA renaming and unparsing
  3. Solving a sample optimization problem using dataflow analysis
  4. Automatic parallelization for shared memory
  5. Automatic parallelization for distributed memory

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.

B629, Arun Chauhan, Department of Computer Science, Indiana University