\documentclass[11pt]{article}
\usepackage{handout2e}
\begin{document}
\input{macros}
\input{courseMacros}
\thispagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1.8ex}

\newcommand{\notinreserve}{$^*$}

\head{CS G713}{Advanced Algorithms}{Fall 2003}{10 September 2003}{2}

\begin{center}
\Large{\bf Books for Reference}
\end{center}

\bigskip

The following is a list of books related to algorithms that may be
useful for reference.  This list, partially compiled by Prof.\ John
Casey, contains both introductory texts as well as advanced books.
Most of these books are available in Snell Library; some of these
books are on the reserve list of the library.

\medskip

{\large {\bf Introductory books on algorithms}}

\begin{enumerate}
\item
Steven Skiena. {\em The Algorithm Design Manual.}  Springer-Verlag, 1998.

This text is an implementation-oriented study of algorithms.  The book
also lists a number of sources for good implementations of various
algorithms.  Also, the book has a CD-ROM full of code, plus practical
advice on choosing algorithms for large-scale problems.

\item
Sara Baase and Allen Van Gelder.  {\em Computer Algorithms: Introduction to Design and
Analysis.\/} Addison-Wesley, 2000.

A newer improved edition of the textbook by Baase below.  A friendly,
undergraduate-oriented book.  Some of the topics covered in our course
are also covered in this book.  

\item 
Gregory J. E. Rawlins.
{\em Compared to what?: An Introduction to the Analysis of Algorithms}.  
Computer Science Press/W. H. Freeman, 1998.

This text is a friendly, undergraduate-oriented book. 

\item Sara Baase.  {\em Computer Algorithms: Introduction to Design
    and Analysis.\/} Addison-Wesley, 1988.

``General reference, although the exposition is sometimes terse or sketchy.''
-- Leonidas Guibas

\item
Udi Manber, {\em Introduction to Algorithms: A Creative Approach},
Addison-Wesley, 1989.

This is a good undergraduate-level textbook on algorithms.

\item
Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman.  {\em The Design and
Analysis of Computer Algorithms.\/} Addison-Wesley, 1974.

A classic, yet a bit outdated now.

\item
Donald E. Knuth.  {\em The Art of Computer Programming.\/} Addison-Wesley,
1968-1974.

Encyclopaedic work in three volumes: (1) Fundamental Algorithms, (2)
Seminumerical Algorithms, (3) Sorting and Searching.  A fourth volume
is in progress.  Knuth had originally planned for seven volumes.

This set of books is one of the greatest collections in computer
science.

\item
Donald E. Knuth.  {\em The Stanford GraphBase.\/} Addison Wesley, 1993.

This is a collection of data and actual C programs implementing a
variety of graph and related algorithms.  

\end{enumerate}

{\large {\bf Basic Mathematics}}

\begin{enumerate}
\item Kenneth Rosen.  {\em Discrete Mathematics and its
    Applications.}  McGraw-Hill, 1998.

A standard textbook for discrete mathematics.

\item Judith Gersting.  {\em Mathematical Structures for Computer
    Science.}  W. H. Freeman \& Co., 1998.

Chapter 2 of this text (Proofs, Recurrences, and Analysis of
Algorithms) is a useful chapter to look at.

\item Ralph Grimaldi.  {\em Combinatorial and Discrete Mathematics: An
    Applied Introduction}.  Longman Publishing Group, 1994.

Another introductory book on discrete mathematics.

\item
Donald E. Knuth.  {\em Fundamental Algorithms}, volume~1 of {\em The
Art of Computer Programming.\/} Addison-Wesley, 1968. 

This book covers a lot of the basic discrete mathematics that is
useful throughout the course.

\item
C. L. Liu.  {\em Introduction to Combinatorial Mathematics.}
McGraw-Hill, 1968.

This an old yet quite useful book on elementary descrete mathematics.

\item
Tom Apostol.  {\em Calculus, Volume 1.\/} Blaisdell, 1967.

This book provides a more thorough treatment than you probably had in
your calculus textbooks.

\item
Jim Pitman.  {\em Probability.\/} Springer-Verlag, 1993.

This book is an excellent elementary introduction to probability
theory.

\item
Kai Lai Chung.
{\em Elementary Probability Theory with Stochastic Processes.\/}
Springer-Verlag, 1974.

This is a readable and intuitive introduction to probability theory.

\end{enumerate}

{\large {\bf A few advanced books}}

\begin{enumerate}
\item
Dexter Kozen.  {\em The Design and Analysis of
Algorithms}. Springer-Verlag, 1992.

An excellent set of lecture notes on advanced algorithms.  The clear,
concise, and elegant description makes it a compelling read for any
course on advanced algorithms.

\item
Mikhail J.~Atallah, editor. {\em Algorithms and Theory of Computation
Handbook}. CRC Press, 1999.

A new handbook of algorithms with contributions on a variety of topics
from leading researchers in the area.

\item
Bernard M. E. Moret and Henry D. Shapiro.  {\em Algorithms from P to NP.\/}
Benjamin-Cummings, 1991.

This book contains algorithms for the computationally hard problems,
with practical advice on what happens on real machines. 

\item
Robert Sedgewick and Philippe Flajolet.
{\em An Introduction to the Analysis of Algorithms.\/}
Addison-Wesley, 1996.

This book describes introductory as well as advanced techniques for
analyzing algorithms.

\item
Robert Tarjan.
{\em Data Structures and Network Algorithms.\/}
Society for Industrial and Applied Mathematics, 1983.

This is an advanced book with succinct descriptions of lots of good
ideas.
\end{enumerate}

{\large {\bf Other fun books}}

\begin{enumerate}
\item
Ronald Graham, D. E. Knuth, and Mark Patashnik.
{\em Concrete Mathematics.\/}  Addison-Wesley, 1994.

This is a fun book to read.  It provides a number of techniques for
summations and solving combinatorial problems.  All of the text is
flanked by funny (and often distracting) graffiti.

\item
David Harel.  {\em Algorithmics: the Spirit of Computing.\/} 
Addison-Wesley, 1992.

It's just what the title claims.  The book originated as a popular TV
series.

\item
Jon Bentley.  {\em Writing efficient programs\/} (1982), {\em
Programming Pearls\/}(1986), and {\em More Programming Pearls\/}
(1988).  Addison-Wesley.

Jon Bentley, one of the leading authorities on programming, provides
suggestions for improving the code you write.

\end{enumerate}
\end{document}

