8.15

EECS 483: Compiler Construction🔗

Syllabus --Winter 2025

Meeting places & times🔗

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

IA

  

David Mekhtiev

  

davidmek

  

Beyster Atrium

  

Tue 2:00-3:00pm

Max New
Max New

Yuchen Jiang
Yuchen Jiang

David Mekhtiev
David Mekhtiev


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 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. I 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.


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/08 W

 

Course overview, our first compiler

 

Reading: Rust book chapters 1-5, notes, notes, slides and neonate implementation

1/13 M

 

Abstract syntax trees, interpreters, Rust and x86 basics

 

notes, slides, live code and Reading: Rust chapters 6,8,9

1/15 W

 

Variables, scope and memory

 

notes, slides and code

1/20 M

 

NO CLASS - MLK Day

 

1/22 W

 

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

 

1/27 M

 

Conditionals 1: Branching

 

1/29 W

 

Conditionals 2: Joining

 

02/03 M

 

Functions 1: Tail Calls

 

02/05 W

 

Loops and mutable variables

 

02/10 M

 

Functions 2: Call and Return

 

02/12 W

 

Calling conventions

 

02/17 M

 

Tail Call Elimination

 

02/19 W

 

Dynamic Typing

 

02/24 M

 

Heap Allocation

 

02/26 W

 

Closures

 

03/10 M

 

Register Allocation 1

 

03/12 W

 

Register Allocation 2

 

03/17 M

 

Midterm Review

 

03/19 W

 

Optimization 1

 

03/24 M

 

Optimization 2

 

03/26 W

 

Lexing 1: Frontend, Regex

 

03/31 M

 

Lexing 2: NFA/DFA

 

04/02 W

 

Parsing 1: Context-free grammars

 

04/07 M

 

Parsing 2: LL(1) grammars and parsers

 

04/09 W

 

Parsing 3:

 

04/14 M

 

Semanic Analysis 1

 

04/16 W

 

Semanic Analysis 2

 

04/21 M

 

Verified Compilation

 


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

Assignment 1: Straightline Code

  

Wed 01/15

  

Fri 01/31

control-flow

  

Mon 02/03

  

Fri 02/14

procedures

  

Mon 02/17

  

Fri 02/28

datatypes

  

Wed 03/19

  

Fri 04/04

optimizations

  

Mon 04/07

  

Fri 04/18

Exam

  

Date

  

Time

  

Location

Midterm

  

Tue 03/18

  

6-8pm

  

TBD

Final

  

Wed 04/30

  

4-6pm

  

1010 DOW


Course policies🔗

Collaboration and academic integrity🔗

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.

Late days & late work🔗

Homework will (typically) 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 and exams. Each assignment is worth 14% of your final grade, totaling 70%. The midterm and final are each worth 15%.

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

  

100%

  

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