Compiler Construction

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.

 

News  

  • 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!

 Lectures:
 Wednesday/Friday
 12:30pm-1:45pm
 2233 Everitt Laboratory

 Instructor:
 Charith Mendis
 Assistant Professor
 Computer Science, UIUC
 4118 Siebel Center  charithm@illinois.edu
 Office hours after the class

 Teaching Assistant:
 Vimarsh Sathia
 PhD Student
 Computer Science, UIUC
 vsathia2@illinois.edu
 Office hours TBD

Overview  

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.

 

Tentative Schedule  

 
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 Representations

MP1 out
09/11

Intermediate Representations 1

09/13

Intermediate Representations 2

09/18

Intermediate Representations 3

09/20

Intermediate Code Generation 1

MP1 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 Generation

MP2 deadline, MP3 out

10/16

Optimization Basics

10/18

Optimization Basics

10/23

Miderm Quiz (In-class)

10/25

Dataflow Analysis

MP5 out
10/30

Dataflow Analysis

11/01

Register Allocation

11/06

Register Allocation

11/08

Instruction Scheduling

MP3 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

TBD

MP4 deadline
12/11

Final Exam (Last day of classes)

MP5 deadline
 

Topics  

  • Lexing and Parsing Review
  • Intermediate Program Representations (AST, CFG, 3-address code, SSA)
  • Runtime Environment
  • Code Generation (imperative fragment, object oriented fragment)
  • Register Allocation
  • Instruction Scheduling
  • Program Optimization (Local, Dataflow, Global)-