EECS 483: Compiler Construction

Fall 2006 Syllabus

 

Schedule and Instructors
Lecture: MW, 10:30 – 12:30, 1006 Dow

Professor Scott Mahlke, 4633 CSE Bldg.
            Office hrs:  Mon/Wed 12:30 – 1:00 pm, or by appointment
GSI
            Simon Chen – Office hrs:  Tue/Thu 1:30 – 3:30pm

Course Description
An introduction to the specification and implementation of modern compilers.
Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages.  As part of the course, students will build a working compiler for a subset of the C programming language.

Course Text
Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, 1988.

Useful Reference Books
- Lex & Yacc, Levine, Mason and Brown, O’Reilly Publishers
- Advanced Compiler Design & Implementation, Steven S. Muchnick, Morgan Kaufmann, 1997.
- Building an Optimizing Compiler, Robert Morgan, Butterworth-Heinemann,1998.
- Modern Compiler Implementation in Java. Andrew Appel. Cambridge Univ Press, 1997

Prerequisites
Required:  Strong C++ programming skills (EECS 281).  Recommended:  Familiarity with Unix C/C++ development tools (i.e., gcc, gdb, emacs); Basic familiarity with computer organization (EECS 370); Some background in foundations of computer science (EECS 376).

Grade
Exams(2)  - 40% (E1 = 20%, E2 = 20%)
Projects (4) - 55%  (P1 = 10%, P2 = 12.5%, P3 = 12.5%, P4 = 20%)
Class participation – 5%
Homeworks – 0%

Exams - There will be two 2-hour exams each given during class (see tentative schedule below).  Exams will be open book/notes.  There will be no final exam.

Projects – This class will consist of four projects, each implementing part of a basic compiler.   Projects 1-3 are mostly specified, so there is limited freedom in what needs to be done.  Project 4 is open ended and students will have to plan out their work.  Project 1 will be done individually, while Projects 2-4 will be done in groups of 2 people.  Project grading will be handled by performing a short demo of the design and operation of your compiler.  Appointments will be set up near the project deadlines for these.

Homeworks – Several homeworks will be provided as practice problems for the exams.  However, there is no requirement to do them.

Class participation - Students are encouraged to take an active role in this class by asking questions or providing comments.  Though only a small portion of the grade is allocated to this area, this category will influence the decision on borderline grades heavily.

Tentative schedule

Week

Subject

Reading

Projects

Exams

0: 9/6

Introduction

Ch 1

 

 

1: 9/11, 9/13

Lexical analysis

Ch 2-3

P1 out, 9/13

 

2: 9/18, 9/20

Syntax analysis

Ch 4-5

 

 

3: 9/25, 9/27

Syntax analysis

Ch 4-5

P1 due, 9/27

 

4: 10/2,
    10/4

Syntax analysis

Semantic analysis

Ch 4-5

Ch 6

P2 out, 10/2

 

5: 10/9, 10/11

Semantic analysis

Ch 6

 

 

6: 10/16, 10/18

Semantic analysis

Ch 6

P2 due, 10/18

 

7: 10/23,

    10/25

Exam review

Exam 1





 

E1, 10/25

8: 10/30, 11/1

Intermediate code

Ch 7-8

P3 out, 10/30

 

9: 11/6, 11/8

Control flow

Ch 9 –10

 

 

10: 11/13, 11/15

Dataflow and Opti

Ch 9-10

P3 due, 11/15

 

11: 11/20, 11/22

Dataflow and Opti

Ch 9-10

P4 out, 11/20

 

12: 11/27, 11/29

Code generation

Ch 9-10

 

 

13: 12/4

      12/6

Code generation

Exam review

Ch 9-10

 

 

 

14: 12/11,

      12/13

Exam2
Advanced topics

 

 

E2, 12/11

15: 12/18

P4 demos

 

P4 due, 12/18

 

 

* No class on  10/16 (Fall Break)