Courses
  /  
Descriptions
EECS 322: Compiler Construction

Quarter Offered

Winter : 11-12:20 MW ; Campanoni

Prerequisites

EECS 213: Introduction to Computer Systems (or equivalent)

Description

The compiler is the programmer's primary tool. Understanding the compiler is therefore critical for programmers, even if they never build one. Furthermore, many design techniques that emerged in the context of compilers are useful for a range of other application areas. This course introduces students to the essential elements of building a compiler: parsing, context-sensitive property checking, code linearization, register allocation, etc. To take this course, students are expected to already understand how programming languages behave, to a fairly detailed degree. The material in the course builds on that knowledge via a series of semantics preserving transformations that start with a fairly high-level programming language and culminate in machine code.

  • This course satisfies the Systems breadth and the project requirement.

RECOMMENDED: EECS 321, EECS 205.

COURSE COORDINATOR: Prof. Simone Campanoni

GRADES: Grades will primarily be based on codewalks at the end of the quarter, but also based on intermediate projects. This course is programming project heavy.

COURSE OBJECTIVES: Students that complete this course should:

- understand how to efficiently implement a programming language,
- have an accurate performance model for the primitives in a programming language,
- have a good sense for the kind of assembly code that a compiler produces
- be able to maintain and extend a compiler for a programming language