Authors: Keith D. Cooper, Linda Torczon
Release Date: 27 October, 2003
ISBN: 155860698X
Publisher: Morgan Kaufmann
Amazon: Here
Other sources include:
This is the primary recommended textbook for the course. Although we do not follow the same approach exactly, the book is recommended as it's fairly well-written, and includes advanced material. You should find this book makes a lot more sense after the course than it does before.
Secondary, alternative textbooks
Publisher: Cambridge University Press
Book's home page: http://www.cs.princeton.edu/~appel/modern/java/
This was the recommended textbook for the course for the last couple of years, and it's still good (though see some negative comments on the www.amazon.com site).
Note, by the way, that there is an earlier edition of this book, "Modern Compiler Implementation in Java: basic techniques". You really want the lateer edition, which includes some corrections as well as substantially more advanced stuff, particularly on optimisation.
Hardcover, 796 pages
Published by Addison-Wesley Pub Co
Publication date: November 1, 1985
Dimensions (in inches): 9.54 x 6.58 x 1.44
ISBN: 0201100886
The definitive book by pioneers in the subject. Often called the Dragon book because of the picture on the front. Compiler engineers regularly refer to "standard Dragon book stuff". Not the easiest book to digest, and beginning to show its age.
Publication date: 1997
Published by: Morgan Kaufmann
ISBN: 1558603204
This is the definitive advanced textbook in compilers with encyclopaedic coverage. Use this if you need to build an optimising compiler - but check out Michael Wolfe's more prescriptive book (above) first.
Hardcover
Published by Addison-Wesley Pub Co
Publication date: June 1995
ISBN: 0805327304
This is the authoritative book on "restructuring" compilers - compilers which parallelise, or modify the execution order of loops to improve cache performance. Unfortunately it doesn't cover some of the introductory material you will probably need for course 221. Restructuring compilers have to understand the dependence structure of the program - which offers the prospect of real "power tools" for automatic processing of programs.
A collection of links to other books