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

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

\head{CSU690}{Algorithms and Data}{Fall 2006}{15 September 2006}{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, which was largely compiled by Prof.\
John Casey, contains both introductory texts as well as advanced
books.  Some of these books may be available on the reserve section at
Snell.

\medskip

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

\begin{enumerate}
\item
T.~Cormen, C.~Leiserson, and R.~Rivest.  {\em Introduction to
Algorithms}.  MIT Press/McGraw-Hill 1990.

Perhaps the most comprehensive textbook on algorithms.  The style of
coverage is formal.  All of the topics covered in our course are also
covered in this text.  So it is a very useful reference for the
course.

\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 
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. If the treatment
of a topic in the course text doesn't satisfy you, look here.

\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
Gilles Brassard and Paul Bratley.  {\em Algorithmics: Theory and Practice.\/}
Prentice-Hall, 1988.

``Good examples and problems. Focus on methods rather than specific
problems.'' -- 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
Robert Sedgewick.  {\em Algorithms in C++}\/.  Volumes~1 and~2.
Addison-Wesley, 1998.

This book is an in-depth coverage of algorithms from the point of view
of a programmer.  Volume 1 covers fundamentals, data structures,
sorting, and searching.  Volume~2 covers string algorithms,
computational geometry, graph algorithms, and some advanced topics.

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

This book is somewhat outdated; it is still a useful book from a
technical standpoint.

\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.  It is a useful companion to
the portion of the course text devoted to graph algorithms.

\item
Richard Neapolitan and Kumarss Naimipour.  {\em Foundations of Algorithms.\/}
Heath, 1996.

This book has an interesting approach, which minimizes the
mathematical machinery used. If your math skills are rusty, Section
1.4 on ``Order'' is a good review.

\item
Paul Purdom and Cynthia Brown.  {\em Analysis of Algorithms.\/} CBS College
Publishing.

This develops the mathematics needed for analysis.

\item
Ellis Horowitz, Sartaj Sahni, and Sanguthevar Rajasekaran.  {\em
Computer Algorithms in C++.\/} Computer Science Press, 1997.

It covers data structures, dynamic programming, as well as
branch-and-bound, randomized, and parallel algorithms.

\item
Gaston Gonnet. {\em Handbook of Algorithms and Data Structures\/}, 1991.

This handbook has a large number of algorithms, with complete code in
C and Pascal.  It also has formulas for calculating performance,
expectation, variance, and other probabilistic measures.

\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
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}

