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,
Useful
Reference Books
- Lex & Yacc,
Levine, Mason and Brown, OReilly 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.
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 |
|
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, |
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 |
|
|
E2, 12/11 |
|
15: 12/18 |
P4 demos |
|
P4 due, 12/18 |
|
* No class on 10/16 (Fall Break)