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 an object-oriented language.
The course web page is located at http://courses.cs.cornell.edu/cs412/2000sp. All course materials will be available at this site.
Computer Science 314, 381, 410. The practicum (CS 413) is a required co-requisite. You may not take CS 412 without taking CS 413 too. Familiarity with programming in Java is also expected.
Lectures are MWF 10:10-11:00am in Hollister 110. Attendance at lecture is expected. The lectures will complement rather than replicate material in the textbook.
The best way to reach the course staff is by sending mail to email@example.com. Please include
in the Subject line. The newsgroup cornell.class.cs412
is also a good way to get in touch with the course staff, particularly if you
want to have a discussion about the course material.
|Andrew Myers||Asst. Professorfirstname.lastname@example.org||4124 Upson||W 2-3PM|
|Aleksey Kliger||TA||ak90||328 Upson||Th 3-4PM|
|Andrew Lin||TA||acl12||328 Upson||M 4-5PM|
|Nate Nystrom||TAemail@example.com||5132 Upson||F 11-12AM|
|Linda Competillo||Admin. Asst.||firstname.lastname@example.org||4115 Upson||8:30-10AM, 2:30-4PM|
Modern Compiler Implementation in Java. Andrew Appel. Cambridge University Press, 1997. ISBN 0-521-58388-8.
Compilers -- Principles, Techniques and Tools. Aho, Sethi and Ullman.
Addison-Wesley, 1988. ISBN 0-201-10088-6. (The Dragon Book)
Advanced Compiler Design and Implementation. Steve Muchnick. Morgan Kaufmann Publishers. ISBN 1-558-60320-4.
Copies of these books will be on reserve in the Engineering library. The Java language specification may also be useful to you either online or in its printed form:
The Java Language Specification. James Gosling, Bill Joy, and Guy Steele. Addison-Wesley, 1996. ISBN 0-201-63451-1
A couple of useful books on coding and software engineering are the following:
Design Patterns: Elements of Reusable Object-Oriented Software. Gamma, Helm, Johnson, Vlissides, Booch. Addison-Wesley, 1995. ISBN 0-201-63361-2
Refactoring: Improving the Design of Existing Code. Martin Fowler. Addison-Wesley, 1999. ISBN 0-201-48567-2.
There are four written homework assignments. You may discuss assignments with other students, but the work must be done on an individual basis. The names of any students you discussed the problems with must be recorded with the corresponding problems.
The compiler project is divided up into six programming assignments that are due at various points throughout the term. Compiler projects will be performed by groups of three or four students. Groups will be created by the course staff, but taking into account student preferences. The same groups will be maintained throughout the semester if possible.
Homework and programming assignments will be accepted up to 4 days late, but at a penalty. The penalty is 5% for one day late, 15% for two days late, 30% for 3 days late, and 50% for 4 days late. Weekends are considered to be a single day when applying this formula. These penalties may be avoided by obtaining an extension on the assignment, but any extensions must be approved by the instructor at least two days before the due date -- last-minute extensions will not be granted. Both homework assignments and programming assignments are due at the beginning of class on the due date. Assignments arriving at the end of class will be treated as an additional day late. Programming assignments will be treated similarly: you will turn in the report for that assignment in class, and make the associated files available in a standard place before class on the due date so that we can test your code. If either the report or the programming assignment arrives after 10AM on a particular day, it will be considered to have arrived a day later for the purpose of late penalties.
Except in unusual circumstances, you will receive the same grade in CS 412 and CS 413. All members of a group will receive the same grade on programming assignments. The breakdown of points per assignment is as follows:
|Homework: 20%||Homework 1||5|
|Programming Assignments: 50%||Programming assignment 1||5|
|Programming assignment 2||7|
|Programming assignment 3||8|
|Programming assignment 4||10|
|Programming assignment 5||10|
|Programming assignment 6||10|
|Prelims: 30%||Prelim 1||15|
The prelims will cover material from the textbook, lectures, and homework assignments. Both prelims will be in-class. There will be no final exam, but your final report and demo will be due on the first day of finals.