Weekly Breakdown
Where to Get Slides / Other Materials
All supplemental course materials not on the website including slides, papers, problem sets, practice exams etc, are available on the course Google Drive here (USC login required). This drive will be updated as the semester progresses, so you should keep it favorited. For convenience, a link is included in the top toolbar on this website.
Week 1
Monday
Lecture: Introduction; Scanners
Suggested Readings
Cooper and Torczon - Ch. 1; §2.1-2.3
Wednesday
Lecture: Top-Down Parsing
Suggested Readings
Cooper and Torczon - §3.1-3.3
Tasks for this Week
- Setup your computer for the programming assignments ASAP
- Start work on Problem Set 1, which is due at the end of Week 2
- Start work on Programming Assignment 1, which is due at the end of Week 3
Week 2
Monday
No class due to MLK Day
Wednesday
Lecture: Bottom-Up Parsing and Semantic Analysis Basics
Suggested Readings
Cooper and Torczon - §3.4; §4.1-4.2; §5.5
Tasks for this Week
- Problem Set 1 is DUE @ 11:59PM on Friday
- Read Paper 0 “How to Read a Paper” and Paper 1 “Making Compiler Design Relevant” (on the Google Drive) and do the pre-class questions for Paper 1, which is due before class on Monday of Week 3
- Continue work on Programming Assignment 1, which is due at the end of Week 3
Week 3
Monday
Before Class: Read Paper 0 “How to Read a Paper” and Paper 1 “Making Compiler Design Relevant” and do the pre-class questions for Paper 1
Paper Discussion: “Making Compiler Design Relevant”
Wednesday
Lecture: Examples of Compilers
Tasks for this Week
- Programming Assignment 1 is DUE @ 11:59PM on Friday
- Start work on Problem Set 2, which is due at the end of Week 4
Week 4
Monday
Lecture: Attribute Grammars
Suggested Readings
Cooper and Torczon - §4.3-4.4
Wednesday
Lecture: IR; LLVM IR; Generating Control Flow
Suggested Readings
Cooper and Torczon - §5.1-5.3
Tasks for this Week
- Problem Set 2 is DUE @ 11:59PM on Friday
- Read Paper 2 “LLVM” and do the pre-class questions for Paper 2, which is due before class on Monday of Week 5
- Start work on Programming Assignment 2, which is due at the end of Week 5
Week 5
Monday
Before Class: Read Paper 2 “LLVM” and do the pre-class questions for Paper 2
Paper Discussion: “LLVM”
Wednesday
Lecture: Arrays, Strings, Memory Layout/Usage; Procedures and Calling Conventions
Suggested Readings
Cooper and Torczon - §6.1-6.3; §7.5-7.7; §7.9
Tasks for this Week
- Programming Assignment 2 is DUE @ 11:59PM on Friday
- Read Paper 3 “A Simple Graph-Based IR” and do the pre-class questions for Paper 3, which is due before class on Monday of Week 6
Week 6
Monday
Before Class: Read Paper 3 “A Simple Graph-Based IR” and do the pre-class questions for Paper 3
Paper Discussion: “A Simple Graph-Based IR”
Wednesday
Lecture: Midterm Exam Review
Tasks for this Week
- Review for the midterm next week
- Start work on Programming Assignment 3, which is due at the end of Week 8
Week 7
Monday
No class due to President’s Day
Wednesday
Midterm Exam (in-class)
Tasks for this Week
- Continue working on Programming Assignment 3, which is due at the end of Week 8
Week 8
Monday
Lecture: Dominators and Data-flow Analysis
Suggested Readings
Cooper and Torczon - §9.1-9.2.2
Wednesday
Lecture: Simple and Efficient Construction of SSA
Suggested Readings
Braun et. al. “Simple and Efficient Construction of Static Single Assignment Form”
Tasks for this Week
- Programming Assignment 3 is DUE @ 11:59PM on Friday
- Read Paper 4 “Tree SSA” and do the pre-class questions for Paper 4, which is due before class on Monday of Week 9
- Start work on Problem Set 3, which is due at the end of Week 9
Week 9
Monday
Before Class: Read Paper 4 “Tree SSA” and do the pre-class questions for Paper 4
Paper Discussion: “Tree SSA”
Wednesday
Lecture: Building SSA Form (Cytron Algorithm)
Suggested Readings
Cooper and Torczon - §9.3.4-9.3.6
Tasks for this Week
- Problem Set 3 is DUE @ 11:59PM on Friday
- Start work on Programming Assignment 4, which is due at the end of Week 10 (after Spring Break)
Spring Break
Enjoy!
Week 10
Monday
Lecture: Introduction to Optimizations; Code Motion; Writing LLVM Optimization Passes; Instruction Selection
Suggested Readings
Cooper and Torczon - §10.3; §11.1-11.7
Wednesday
No class due to a conference
Tasks for this Week
- Programming Assignment 4 is DUE @ 11:59PM on Friday
- Start work on Problem Set 4, which is due at the end of Week 11
Week 11
Monday
Lecture: SIMD and Auto-Vectorization
Wednesday
Lecture: Global Register Allocation
Suggested Readings
Cooper and Torczon - §13.1-13.4
Tasks for this Week
- Problem Set 4 is DUE @ 11:59PM on Friday
- Read Paper 5 “Linear Scan Register Allocation” and do the pre-class questions for Paper 5, which is due before class on Monday of Week 12
- Start work on Programming Assignment 5, which is due at the end of Week 12
Week 12
Monday
Before Class: Read Paper 5 “Linear Scan Register Allocation” and do the pre-class questions for Paper 5
Paper Discussion: “Linear Scan Register Allocation”
Wednesday
Lecture: Instruction Scheduling
Suggested Readings
Cooper and Torczon - §12.1-12.6
Tasks for this Week
- Programming Assignment 5 is DUE @ 11:59PM on Friday
- Start work on Problem Set 5, which is due at the end of Week 13
Week 13
Monday
Lecture: Deconstruction of SSA; Basics of Static Analysis
Wednesday
Lecture: Dynamic Binary Instrumentation
Tasks for this Week
- Problem Set 5 is DUE @ 11:59PM on Friday
- Read Paper 6 “Valgrind” and do the pre-class questions for Paper 6, which is due before class on Monday of Week 14
- Start work on Programming Assignment 6, which is due at the end of Week 15
Week 14
Monday
Before Class: Read Paper 6 “Valgrind” and do the pre-class questions for Paper 6
Paper Discussion: “Valgrind”
Wednesday
Lecture: Interprocedural Analysis; Pointer Aliasing; OpenMP and Compiling OpenMP
Tasks for this Week
- Continue work on Programming Assignment 6, which is due at the end of Week 15
Week 15
Monday
Guest Lecture: ARM, MLIR, and Tensor Operator Set Architecture
Wednesday
Lecture: Final Exam Review
Tasks for this Week
- Programming Assignment 6 is DUE @ 11:59PM on Friday