CS412/413
Introduction to Compilers and Translators
Spring 1999

Cornell University Computer Science Department


Course Description
Overview of the internal structure of modern compilers, with emphasis on implementation techniques. Topics covered include lexical scanning, parsing techniques, symbol table manipulation, static type checking, code generation, dataflow analysis and other optimization techniques, and support for various language features. As part of the course, students will build a working compiler.

Web Page
The course web page is located at http://www.cs.cornell.edu/cs412-sp99/. All course materials will be available at this site.

Prerequisites
Computer Science 314, 381, 410. The practicum (CS413) is required.

Course Meetings
Lectures are MWF 10:10-11:00am in Phillips 219. Attendance at lecture is expected. The lectures will complement rather than replicate material in the textbook.

Teaching Staff
The best way to reach the course staff is by sending mail to cs412@cs.cornell.edu. Please include cs412 in the Subject line.
 

Name Title E-mail Office Office hours
Andrew Myers Asst. Professor myers@cs.cornell.edu 4124 Upson W 4-5pm
Vincent Ng TA yung@cs.cornell.edu 490 Rhodes WF 11:15am-12:15pm
Robert Tsai TA tsai@cs.cornell.edu 455 Rhodes* TTh 11:30am-12:30pm

*Send email to let me know of your intent to visit; no confirmation from me is necessary.

Required Reading
Modern Compiler Implementation in Java. Andrew Appel. Cambridge University Press, 1997. ISBN 0-521-58388-8.

Other Reading
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.

The Java Language Specification. James Gosling, Bill Joy, and Guy Steele. Addison-Wesley, 1996. ISBN 0-201-63451-1

Copies of these books will be on reserve in the Engineering library.

Assignments and Grading
There are three written homeworks. You may discuss homeworks with other students, but the work must be done on an individual basis. The names of any students you discussed the homeworks with must be recorded on the homeworks. 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.

Homework and programming assignments will be accepted up to 3 days late, but at a penalty. The penalty is 10% for one day late, 20% for two days late, and 40% for 3 days late. Any extensions must be approved at least two days before the due date -- last-minute extensions will not be granted. Homeworks are due at the beginning of class on that day. Homeworks 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 so that we can test your compiler.

Except in unusual circumstances, you will receive the same grade in CS412 and CS413. The breakdown of points per assignment is as follows:

Homework 1 6
Homework 2 6
Programming assignment 1 8
Programming assignment 2 8
Programming assignment 3 12
Programming assignment 4 12
Programming assignment 5 12
Project demo 6
Prelim 1 15
Prelim 2 15
Total 100

Exams
The prelims will cover material from the textbook, lectures, and homework assignments. The first prelim will be on March 1, in class. The second prelim will be on April 21, also in class. There will be no final exam, but a final report will be due on the first day of finals.