Fall 2024 Edition
This class examines the design and implementation of an optimizing compiler. Students will learn about common optimizations, intermediate languages, and design choices in lectures. Students will learn about the software engineering challenges of implementing a compiler for an imperative, object-oriented language in machine problems.
The class is in-person, and there won't be an online component. In case we have to meet online for some reason, a prior announcement will be made using CampusWire with relevant Zoom links.
08/26/2024: CampusWire is up! Please sign up at this link. We will be using CampusWire for discussions. Students are encouraged to ask questions using CampusWire to get clarifications from the course staff.
08/26/2024: The website is up!
Students will complete four machine problems throughout the course. Students who take the 4-unit version of the course also have to complete a fifth machine problem. There will also be two quizzes -- at the mid-semester and at the end. Each machine problem will build on the previous one, so it is expected that students will write maintainable, reusable, and well-documented code for assignments. The course will be similar in content (and partially in presentation) to the Fall 2023 version.
We will compute the final grade using the following table:
The core programming project will be in four parts, and will be graded as the semester progresses. The project weights are 15 (MP1), 25 (MP2), 30 (MP3), and 30 (MP4) out of total project points.Activity | Grade 3-credit | Grade 4-credit | Details |
---|---|---|---|
Programming Assignments (MPs 1-4) | 50% | 40% | The core programming project will be in four parts, and will be graded as the semester progresses. The project weights are 15 (MP1), 25 (MP2), 30 (MP3), and 30 (MP4) out of total project points. |
Unit Project (MP5) | 0% | 20% | Only 4-credit-hour students do the unit project. It is mandatory for their grade. |
Mid-term Quiz | 20% | 16% | Quiz during lecture. Tentative Date: TBD |
Final Quiz | 30% | 24% | During final day of classes |
Extra Credit | 10% | 10% | We will give additional assignments on the projects (they will together scale up to 10% of the total grade). |
We will assign the letter grade based on their number of points on a 100-point scale (i.e. we don't do prior grading-on-the-curve).
More details about the course administration and grading policies are available here.
Date | Topic | Notes | |
---|---|---|---|
08/28 |
Introduction |
Slides | |
08/30 |
Review of Lexing and Parsing |
||
09/04 |
Review of Parsing |
||
09/06 |
Parsing, Tesing and Intermediate RepresentationsMP1 out |
||
09/11 |
Intermediate Representations 1 |
||
09/13 |
Intermediate Representations 2 |
||
09/18 |
Intermediate Representations 3 |
||
09/20 |
Intermediate Code Generation 1MP1 deadline, MP2 is out. |
||
09/25 |
Intermediate Code Generation 2 |
||
09/27 |
Runtime Environments 1 |
||
10/02 |
Runtime Environments 2 |
||
10/04 |
More on Code Generation |
||
10/09 |
More on Code Generation |
||
10/11 |
More on Code GenerationMP2 deadline, MP3 out |
||
10/16 |
Optimization Basics |
||
10/18 |
Optimization Basics |
||
10/23 |
Miderm Quiz (In-class) |
||
10/25 |
Dataflow AnalysisMP5 out |
||
10/30 |
Dataflow Analysis |
||
11/01 |
Register Allocation |
||
11/06 |
Register Allocation |
||
11/08 |
Instruction SchedulingMP3 deadline, MP4 out |
||
11/13 |
Instruction Scheduling |
||
11/15 |
Procedure-level Optimization |
||
11/20 |
Procedure-level Optimization |
||
11/22 |
TBD |
||
11/27 | Fall Break (no class) |
||
11/29 | |||
12/04 |
TBD |
||
12/06 |
TBDMP4 deadline |
||
12/11 |
Final Exam (Last day of classes)MP5 deadline |