8.18

EECS 483: Compiler Construction🔗

Syllabus --Winter 2026

Meeting places & times🔗

  • Lecture: 1303 EECS Monday and Wednesday 1:30 PM – 3:00 PM.
    Recordings available on Canvas afterwards.

  • Discussion: 1010 DOW Friday 12:30 PM – 1:30 PM

Course staff & office hours🔗

Instructor

  

Max New

  

maxsnew

  

Beyster 4628 & Zoom

  

Mon & Thu 3:00-4:30pm (hybrid),
and by appointment

GSI

  

Yuchen Jiang

  

lighght

  

Beyster Atrium

  

Wed 3:00-4:00pm & Fri 1:30-2:30pm

Max New
Max New

Yuchen Jiang
Yuchen Jiang


Learning Objectives🔗

EECS 483 covers the implementation of efficient compilers for programming languages. The course focuses on the connections between language features and the impact they have on the entire compiler pipeline. The course gradually builds up to an optimizing compiler for a dynamically typed language. We cover the compiler frontend, intermediate representations, backends, runtime systems as well as program analysis and optimizations.

Coursework🔗

Students will be submit 5 programming assignments implementing a compiler, as well as a midterm and final exams. Homework assignments can be completed either alone or in groups of two.


External Links🔗

This webpage contains the syllabus, materials from lecture, as well as the homework assignments. We will additionally use the following sites:


Materials🔗

Software🔗

Programming assignments will use several pieces of software:

  • Rust, version 1.92 this includes the package manager/build tool Cargo

  • nasm, an open-source assembler

Rust is supported by many editors you may use any editor you wish.

Compilers written in the class will target x86_64, and be graded on Linux, and code is not cross-platform. We will provide pointers to how Mac users can easily make their code work on Linux, but Windows users are recommended to install a Linux distribution using WSL for testing. Instructions are provided here.

Books🔗

This course has no required textbook. Instead, detailed notes and/or slides will be included on this webpage for every lecture. As an additional reference, the following textbooks may be useful to you.


Edited by Fabrice Rastello and Florent Bouchez Tichadou, SSA-Based Compiler Design, Springer, 2022.

  


Andrew Appel, Modern Compiler Implementation in ML, Cambridge University Press, 1998.

  


Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools, Pearson Education Inc, 2006.

Online resources🔗

Rust Resources

X86 Resources

X64 Resources


Lectures🔗

This table specifies the lecture schedule; topics are tentative. Lecture notes/slides will be added as the lectures take place

Date

 

Topics (tentative and approximate)

 

Materials

1/07 W

 

Course overview, our first compiler

 

Reading: Rust book chapters 1-5, notes, notes, slides and live code

1/12 M

 

Abstract syntax trees, interpreters, Rust and x86 basics

 

notes and Reading: Rust chapters 6,8,9

1/14 W

 

Variables, scope and memory

 

notes

1/19 M

 

NO CLASS - MLK Day

 

1/21 W

 

Complex expressions, intermediate representations (No in-person lecture, video posted on Canvas)

 

notes

1/26 M

 

Conditionals 1

 

1/28 W

 

Conditionals 2

 

02/02 M

 

Tail Called Functions

 

Reading: SSA is Functional Programming and Reading: SSA Book Chapter 6

02/04 W

 

Mutable Variables, Loops

 

Reading: SSA Book Chapter 1

02/09 M

 

Extern Function Calls, Calling Conventions

 

02/11 W

 

Function Definitions, Lambda Lifting

 

02/16 M

 

Dynamic Typing 1

 

02/18 W

 

Dynamic Typing 2, Heap Allocation

 

02/23 M

 

Heap Allocation 2, Closures

 

02/25 W

 

Closures 2

 

03/02 M

 

Spring Break

 

03/04 W

 

Spring Break

 

03/09 M

 

Memory Management, Garbage Collection

 

Reading: Appel Chapter 13

03/11 W

 

Midterm Review

 

03/16 M

 

Register Allocation 1

 

03/18 W

 

Register Allocation 2

 

03/23 M

 

Optimization 1

 

03/25 W

 

Optimization 2

 

03/30 M

 

Lexing 1: Frontend, Regex

 

04/01 W

 

Lexing 2: NFA/DFA

 

Reading: Appel Chapter 2

04/06 M

 

Parsing 1: Context-free grammars

 

Reading: Appel Chapter 3

04/08 W

 

Parsing 2: LL(1) grammars and parsers

 

04/13 M

 

Parsing 3: LR(1) grammars and parsers

 

04/15 W

 

Parser Generators in Practice, Verified Compilation

 

04/20 M

 

Final Exam Review

 


Testing🔗

Testing your code is sufficiently important that we’ve devoted an entire page to it. Please read these notes, for each and every assignment you work on.


Homework and Exam schedule🔗

Link

  

Assigned

  

Due

straightline-code

  

Wed 01/14

  

Fri 01/30

control-flow

  

Mon 02/02

  

Fri 02/13

procedures

  

Mon 02/16

  

Fri 02/27

datatypes

  

Wed 03/18

  

Fri 04/03

optimizations

  

Mon 04/06

  

Fri 04/17

Exam

  

Date

  

Time

  

Location

  

Midterm

  

Tue 03/17

  

6pm-8pm

  

DOW 1013

  

Final

  

Wed 04/29

  

10:30am-12:30pm

  

TBD

  


Course policies🔗

Collaboration and academic integrity🔗

You may not collaborate with anyone on any of the exams. You may not use any electronic tools, including phones, tablets, netbooks, laptops, desktop computers, etc. If in doubt, ask a member of the course staff.

Programming assignments may be completed with a partner or solo.

You must collaborate with your assigned partner or team, as specified, on homework assignments. You may request help from any staff member on homework. (When you are working with a partner, we strongly recommend that you request help with your partner, rather than solo.) You may use the Piazza bulletin board to ask questions regarding assignments, so long as your questions (and answers) do not reveal information regarding solutions. You may not get any help from anyone else on a homework assignment; all material submitted must be your own. If in doubt, ask a member of the course staff.

Providing illicit help to another student is also cheating, and will be punished the same as receiving illicit help. It is your responsibility to safeguard your own work.

Students who cheat will be reported to the university’s office on academic integrity and penalized by the course staff, at our discretion, up to and including failing the course.

If you are unclear on any of these policies, please ask a member of the course staff.

Homework🔗

We will be using the following gradescope page for homework submissions.

Attendance Policy🔗

In-person attendance in class and active participation are correlated with course success. All lecture material is available in lecture capture, but participation counts for up to 5% of your final grade.

That is, at one extreme if you never attend class or participate your final grade will be based 65% on homework and 35% on exams

At the other extreme, if you have perfect attendance and regularly participate, you will receive full 5% credit from participation, with the remaining credits being 65% from homework and 30% from exams.

Late days & late work🔗

Homework will be due Friday at 11:59pm. Late work will be accepted for the next two days: a 10% deduction if by Saturday 11:59pm and a 20% deduction if by Sunday 11:59pm. After that, late submissions will not be accepted. This policy generally holds unless otherwise specified in the assignment.

Grades🔗

Your grade will be based on your performance on the programming assignments, exams and participation. Homework assignments are worth 65% with each weighted an equal amount. The midterm and final are worth 30-35%, with each weighted equally. Participation is worth 0-5%

Course grades overall will not be curved, but exams will be curved if necessary to match recent course median grades.

The estimated mapping of raw point totals to letter grades is given below. Please note that these grade boundaries may move slightly in either direction at the discretion of the instructor: if a particular breakpoint falls in the middle of a tight cluster of numeric grades, we will attempt to move the breakpoint to give that whole cluster the same letter grade. If, near the end of the semester, you are concerned that your grade is hovering near a breakpoint, see me to discuss your concerns.

Cutoff

  

99%

  

93%

  

90%

  

86%

  

83%

  

80%

  

76%

  

73%

  

70%

  

66%

  

63%

  

60%

  

else

Letter grade

  

A+

  

A

  

A-

  

B+

  

B

  

B-

  

C+

  

C

  

C-

  

D+

  

D

  

D-

  

F