Thursday 5:00 - 6:50 pm
Room 109, Warren Weaver Hall
Professor Amir Pnueli
Instructor: Amir Pnueli
Office hours: WWH505, Monday and Wednesday 4-6 pm, and by appointment.
- TA: Yeting Ge, firstname.lastname@example.org
- Grader: Christopher Ross Logie, email@example.com
- Submitting your assignments to a TA/Grader:
- If your last name alphabetically is from A through Miller, submit
your assignments to Yeting Ge, firstname.lastname@example.org.
- If your last name alphabetically is from Mizhen through Z, submit your
assignments to Chris Logie, email@example.com .
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, Sethi and Ullman: Compilers, principles, Techniques and tools
This is still a standard text, and even though more than 15 years old it
covers most of the topics we want to discuss in sufficient detail. A new
edition is to appear shortly.
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
sample questions for final examination
Assignment 1: lexical analysis , due
February 11, 2005
Assignment 2: Algorithms on grammars
The course involves the construction of a compiler for a simple imperative
Lexer Assignment, due February, 18, 2005.
- Parser Assignment, due March 11, 2005.
Semantic Analysis Assignment, due April, 8, 2005.
Intermediate Code Generation, due April, 22, 2005.
Assembly Code Generation, due May, 6, 2005.
Test Programs for Compiler Project