Prerequisite: 6.170 and
proficiency in Java
U (1)
4-4-4
Analyzes issues associated with the implementation of higher-level programming languages. Fundamental concepts, functions, and structures of compilers. Basic program optimization techniques. The interaction of theory and practice. Using tools in building software. Includes a multi-person project on design and implementation of a compiler written in Java that generates x86-64 executable machine code. 8 Engineering Design Points.
HKN Underground Guide evaluationAll projects should be submitted by 5pm on the due date. Hard copies must be turned in to 32-G735 by 5pm, and online submissions must have timestamps before 5pm.
Late penalty for projects is TBD.
Faculty
Saman Amarasinghe
32-G778
Teaching Assistant
Michael Gordon
32-G890
Course Secretary
Mary McDavitt
32-G735
Tel: x3-9620
To email the entire course staff:
Monday, Tuesday, Wednesday, and Thursday
11:00am - 12:00noon
32-124
You should be able to find these at the Coop, Quantum Books, or Amazon.
Modern Compiler Implementation in Java (Tiger book)
A.W. Appel
Cambridge University Press, 1998
ISBN 0-52158-388-8
A textbook tutorial on compiler implementation, including techniques
for many language features
Compilers: Principles, Techniques and Tools (Dragon book)
Aho, Sethi and Ullman
Addison-Wesley, 1986
ISBN 0-20110-1947
The classic compilers textbook, although its front-end emphasis
reflects its age.
Advanced Compiler Design and Implementation (Whale book)
Steven Muchnick
Morgan Kaufman Publishers, 1997
ISBN 1-55860-320-4
Essentially a recipe book of optimizations; very complete and suited
for industrial practitioners and researchers.
Engineering a Compiler (Ark book)
Keith D. Cooper, Linda Torczon
Morgan Kaufman Publishers, 2003
ISBN 1-55860-698-X
A modern classroom textbook, with increased emphasis on the back-end
and implementation techniques.
Optimizing Compilers for Modern Architectures
Randy Allen and Ken Kennedy
Morgan Kaufman Publishers, 2001
ISBN 1-55860-286-0
A modern textbook that focuses on optimizations including parallelization
and memory hierarchy optimizations.