Tuesday 3:30 - 4:45 pm, CIWW 102
Thursday 3:30 - 4:45 pm, CIWW 102
Professor Amir Pnueli
Instructor: Amir Pnueli
Office hours: CIWW402, Tuesday and Thursday 2-3 pm, or by appointment.
All students should register themselves with the class list, which is used for
all technical discussions concerning the course and the course project.
To subscribe to this list visit the web page:
where you will find full directions.
Please send all your questions to this list (not only to the instructor) so
that everyone can participate.
Aho, Lam, Sethi, and Ullman: Compilers, principles, Techniques and
(Addison Wesley, Second Edition)
Scott: Programming Language Pragmatics.
A nice balance of language issues and implementation issues, with substantial
elementary information about compiler structures and organization.
Additional recommended readings:
Fraser and Hanson: a retargetable C compiler
(Benjamin Cummings, 1996)
Good treatment of the machine-description techniques used among others by
the GCC family of compilers.
Muchnick: advanced compiler design and
implementation (Morgan Kaufman, 1997)
Excellent treatment of code generation and optimization issues for
a variety of processors.
Appel : modern compiler implementation in C : basic
Also available in ML and Java versions.
Dewar & Smosna : Microprocessors, a programmer's
perspective (Mc-Graw Hill)
An excellent survey of what a software engineer needs to know
The work in the course consists of several written assignment and a
programming project, consiting of 5 parts, in which the students will
be expected to write a compiler for a simple imperative program. There
is no final exam.
The grade for the course will be computed by a weighted average of the
written assignments and the project.
Assignment 1: lexical analysis , due
October 1, 2009
Assignment 2: Algorithms on grammars (postscript),
due October 20, 2009
The course involves the construction of a compiler for a simple imperative
, due October, 8, 2009.
- Parser Assignment (postscript)
due October 22, 2009.
Semantic Analysis Assignment (postscript),
, due November 10, 2009.
Intermediate Code Generation (postscript),
, due December 4, 2009.
Assembly Code Generation
, due December 20, 2009.
Test Programs for Compiler Project