Lecture: Monday/Wednesday 1:30-3:00, EECS 1311 (1:40pm-3:00 clock time)

Discussion: Friday 12:00-1:00, EECS 1303

Recommended Textbook

There is no required textbook for this course. However, these books are recommended:

Compilers: Principles, Techniques, and Tools. (Second Edition). Aho, Lam, Sethi, and Ullman. ISBN: 0-321-48681-1. aka the Dragon Book

Programming Language Pragmatics. (Third Edition). Michael L. Scott. ISBN: 978-0-12-374514-9.


Kevin Leach Office Hours: Thursday, 2-4pm, BBB 2717 (Kevin)
Monday Wednesday: 3-4:30pm, BBB 2753 (Ram)
Tuesday/Thursday, 11:00am-12:30pm, BBB Learning Center (Lawrence)

Course Staff

Instructor: Kevin Leach

GSI: Ram Srivatsa Kannan

IA: Lawrence Wu


Compilers Construction (EECS 483) will aquaint you with the fundamental ideas surrounding the design and implementation of a compiler. The course will stress a significant, practical course project: an end-to-end optimizing compiler. You will produce a program that accepts as input source code in a high-level language and produces as output low-level assembly representing an executable program. You will master fundamental concepts of lexical analysis, parsing, code generation, optimization, as well as calling conventions, dataflow analysis, grammars, variable bindings, control flow, types, and object memory layout.

Students will gain experience with programming via the Cool programming language. In addition, students will complete assignments using their choice of Python, Ruby, JavaScript, Haskell, or OCaml.

Enrollment Restrictions

University-enforced prerequisites

EECS281 (Data structures)

EECS370 (Computer Organization)

Recommended prerequisites

You should be willing to pick up new programming languages.

You should (at least) be familiar with imperative programming in Python. You will be in fine shape if you alternatively use Ruby, JavaScript, Haskell, or OCaml.

Project and Assignments

This course consists of 6 Programming Assignments. Taken together, the assignments form a complete optimizing compiler for Cool, the Classroom Object-Oriented Language. The project components are assigned in roughly increasing order of size and difficulty; proportionately more time is allotted for the later assignments. Later assignments will be weighted more heavily in the final grade.

Your program submissions will be evaluated for correctness, organization, and documentation.

Assignments may be done individually or in teams of two, three, or four members. However, the first assignment must be completed individually to acquaint you with the Cool Language.

Students on teams are expected to participate equally in the effort and to be thoroughly familiar with all aspects of the joint work. All members bear full responsibilitiy for the completion of assignments. Members turn in one solution for each Assignment; each member receives the same grade for the assignment. While you are allowed to change teams between assignments, teams may not be dissolved in the middle of an assignment without instructor permission.

Assignments are due at 11:50pm on the date in the course schedule. Assignments will be turned in electronically via a special submission server.

Course Programming Languages

Additionally, you will construct your compiler using one (or more if you choose) of the following languages.


You must complete the programming assignments to receive a passing grade.

  • 5% Programming Assignment 1
  • 10% Programming Assignment 2
  • 10% Programming Assignment 3
  • 15% Programming Assignment 4
  • 25% Programming Assignment 5
  • 10% Programming Assignment 6 (bonus)
  • 10% Midterm Exam 1
  • 10% Midterm Exam 2
  • 15% Final Exam

Final grades will be computed based upon the class average. The average grade will roughly correspond to a B.

Late Policy

Homework assignments are due at 11:50pm on the due date. Assignments submitted late will be penalized based on lateness. If an assignment is submitted h hours late, the assignment's final grade will be reduced by h%. For example, if you get 90% on an assignment submitted 8 hours late, your final grade is .92(.90)

Regrade Policy

Homework and exam regrade requests must be received by the GSI within one week of receiving your grade. We will regrade for correcetness, meaning that your grade may increase or decrease, so you could end up with fewer points than before the regrade.

All course materials are due by the end of the final exam date: April 24, 2017 at 6pm. There will be no changes after this time.

Honor Code Statement

Homework assignments

Please abide by the following policies with regard to programming assignments. Students who violate these policies are subject to failure for the assignment or semester as well as referral to the Honor Council.

Any attempt to subvert, disable, or disclose information from the automatic grading server will result in an F for the semester and referral to the Honor Council. Examples include:

Midterm and Final Exams