Lecture: Monday/Wednesday 1:30-3:00, EECS 1311 (1:40pm-3:00 clock time)
Discussion: Friday 12:00-1:00, EECS 1303
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)
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.
EECS281 (Data structures)
EECS370 (Computer Organization)
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.
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.
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.
Final grades will be computed based upon the class average. The average grade will roughly correspond to a B.
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)
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.
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.
The first homework, PA1, must be completed individually.
Subsequent assignments can involve teams of up to four members. You may share code amongst your team, but you are not allowed to share code with other teams or students.
Students and teams can discuss strategies for completing the homeworks, such as data structures and software architecture.
Students are expected to keep their code and submissions private. Please do not create publicly-accessible repositories (e.g., GitHub).
We will use plagiarism detection software on submitted assignments.
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: