Skip to main content Link Search Menu Expand Document (external link)

Theme: auto

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


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


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


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


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


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


Week 7

Monday

No class due to President’s Day

Wednesday

Midterm Exam (in-class)

Tasks for this Week


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


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


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


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


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


Week 13

Monday

Lecture: Deconstruction of SSA; Basics of Static Analysis

Wednesday

Lecture: Dynamic Binary Instrumentation

Tasks for this Week


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


Week 15

Monday

Guest Lecture: ARM, MLIR, and Tensor Operator Set Architecture

Wednesday

Lecture: Final Exam Review

Tasks for this Week