Course Description
This course is an introduction to compiler construction. Topics covered will include the following: lexical scanning, parsing (top-down and bottom-up), abstract syntax trees, semantic analysis, intermediate code generation , optimization, and code generation. As part of the course, students will build a working compiler for the Decaf language (a subset of the C++ and Java programming language).
This course provides the student with an experience of the design and construction of a working compiler. The course emphasizes techniques that have direct application to the construction of compilers and optimization.
Textbook
Engineering a Compiler by Keith Cooper, Linda Torczon (link)
References
-Compilers: Principles, Techniques, and Tools (2nd Edition) ,
Aho, Lam, Sethi, and Ullman (the "purple dragon" book), 2006. (Handles the front-end
in more depth).
-Lex & Yacc, Levine, Mason and Brown,
O’Reilly Publishers
Course Prerequisites
Enforced Pre-requisite:(EECS 281 or CMPTRSC 281 or EECS 380 or CMPTRSC 380 or EECS 398, Winter 2005, Section 001 or EECS 398, Fall 2005, Section 001) or Graduate Standing (C or better)
Advisory Pre-requisite: EECS 281 or EECS 398, Winter 2005, section 001
Course Information
| Lectures | Mon. & Wed. 1:30 - 3:00 PM in 2166 Dow |
|---|---|
| Discussions | Fri. 1:30 - 2:30 PM in 2166 Dow |
| CTools | http://ctools.umich.edu/ |
| Message Board | https://phorum.eecs.umich.edu/ |
| Instructor | Satish Narayanasamy |
| Email, URL | nsatish AT eecs.umich.edu, http://www.eecs.umich.edu/~nsatish/ |
| Office | 4709 CSE |
| Phone | 734-764-6984 |
| Office Hours | 4709 CSE Mon and Wed 3-4p |
| GSI | Vaibhav Aggarwal |
| vaibhavg AT umich.edu | |
| Office Hours | Learning Center Tues, and Thurs 12:30-1:30p |
Grading Policy
| Midterm Exam | 20% | Feb 18th (tentative) |
| Final Exam | 20% | April 29th (tentative) |
| Project | 50% | Based on Decaf language. Can be done with a partner. |
| Assignments | 5% | There will be about six homeworks. To be done individually. |
| Class and Forum Participation | 5% | Likely to have impact only in the borderline cases. |
Phorum Usage Policy
The EECS 483 phorum is to be used for questions (and answers) about 483 homeworks, projects and anything else related to the class. Following rules should be observed:
Stay on topic. It is okay to wander sometimes (like discussions about new features in compilers or posting pointers to related articles), but we really don't want to hear about the car you are selling.
-
You MAY NOT post code or algorithms for the projects. Doing so will be treated as a violation of the honor code! If you can't ask your question without referring to code, you should bring your question to office hours, or failing that, you can mail your question to the GSI or Instructor.
-
You MAY post generic C programming questions, including using code to illustrate the question. But the code should be generic and not code from your project nor it should refer to the project.
Honor Code
You can interact with other students for discussing course materials, provide each other with limited debugging assistance, and help each other learn development tools. Though you can discuss homeworks with others, you have to write it up individually. Do not refer to others source code for the projects. We use sophisticated automated program to correlate projects of different groups and check for plagiarism.
The Engineering Honor Code obligates you not only to abide by this policy, but also to report any violations that you become aware of. Violations of this policy will be brought to the College of Engineering's Honor Council. For more information on the Honor Code, see Honor Council web page. If you have any doubts about whether a certain level of collaboration is permissible, or any other questions, contact the professor.