Class: Wednesdays and Fridays, 8:30-10:15am, SI-007
TA: Ilya Yanok
Office hours: By appointment Exam: January 18, 2016 at 13:30 Room SI-006
This course focuses on the design and implementation of compilers. Topics covered include the structure of one-pass and multiple-pass compilers; symbol table management; lexical analysis; traditional and automated parsing techniques; syntax-directed translation and semantic analysis; run-time storage management; intermediate code generation; introduction to optimization; and code generation. This course requires a substantial, semester-long programming project implementing a functional compiler that includes lexical and syntactic analyzers, a type checker, and a code generator.
Please send class-related questions to the Discussions Forum on Moodle
(unless, of course, they concern private rather
than technical or organizational issues).
There will be a homework assignment roughly every week.
There will be a project milestone every 2-3 weeks. These will require a substantial amount of programming.
There will two exams: a midterm and a final.
The final grades will be computed as 10% from homeworks, 30% from the project, 20% from the midterm exam, and 40% from the final exam.
The policy for late assignments is as follows:
If you submit at least 1 minute late, but at most 3 hours late, you receive 50% of the points for that assignment.
Otherwise, late homeworks or project milestones are only acceptable if the lateness is caused by circumstances beyond your control, such as illness or a missed flight.
In this case, you only get the points for the homework if you provide official documentation, such as a doctor's certificate, for the reason why your homework is late.
I encourage you to collaborate on homework assignments. But you must write up
and turn in your own answers. Also, you must clearly indicate who you
collaborated with. If I detect any incidents of cheating, I will report them
immediately to the department, and the assignment will be given a grade of 0.
Students must write
a review for each assigned paper (to make sure everyone keeps up with
the readings). Each review should be about a paragraph long and
discuss in the student's own words (1) the main idea(s) of
each paper, (2) the student's main criticisms (regarding soundness,
methodology, presentation, etc.), and (3) relevance to current systems
or future research directions. David Wetherall at the University of
Washington has written a
great guide to reviewing
Reviews are submitted by emailing them to the professor and the TA in plain-text format (with
hard line breaks after each line). Paper
reviews are due at 8am on the day of the corresponding class!
Please be sure to regularly check this page for updates.