Books about Algorithms
Paul Taylor
None of these books is specifically recommended.
Knuth's book is the Great Grand-daddy of books on algorithms,
but much of its emphasis is on intricate calculations of precisely
how many instructions are executed.
Sedgewick's and Weiss's books are more modern and more student-friendly,
but owe much to Knuth.
All of these books make heavy use of Calculus. The reasons for this
are more a matter of the culture of American universities than what is
actually relevant to the performance of these algorithms when you
program them.
On the other hand, what is missing from the American tradition
is proof of correctness of the algorithms.
The book by Broda et al., which was based on the courses at
Imperial College that correspond to our Logic and Algorithms courses,
heavily influenced my way of teaching this course.
The book by Baase is actually the most similar to my course,
but it is seriously lacking in precision, both in correctness
and complexity analysis.
I am not telling you to buy any of these books, but if you
do choose to buy any of them, you should consider the balance between
your short-term need to learn the material in this course, and
the long-term usefulness of the book in your programming career.
Broda is better as a teaching book, Weiss as a programmer's book.
You will find yourself looking at Weiss's book long into the future,
but you will probably never use Broda's book again.
Richard Bornat recommended Weiss's book when he taught this course,
but I found that his "look - no hands!" attitude to programming
was a serious obstacle to my teaching students what I wanted them
to learn.
The QA76 numbers tell you where to find the books in
QMW Library.
Just going to the appropriate section of the library is often
a quicker way of finding things out than using bibliographies
and catalogues.
If the Web interface for the library catalogue had been designed
according to the straightforward and well thought out original
principles of the Web, it would have been possible for me to do the
search for you and bookmark the pages for the books themselves. Then
you would have been able to find out directly whether there are any
copies currently available in the library. Unfortunately, the
designer of this Web interface was "clever" and used JavaScript, so
this simple and obvious application of the library catalogue is not
possible.
The links behind the authors' names take you via
Hypatia
to other information about these people, such as
their other publications and how to contact them.
My own book is not relevant to this course:
it is listed for reasons of vanity.
Baase, Sara,
van Gelder, Allen,
Computer Algorithms: Introduction to Design and Analysis,
Addison-Wesley,
1999,
QA 76.9.
Broda, Krysia,
Eisenbach, Susan,
Khoshnevisan, Hessam,
Vickers, Steven,
Reasoned Programming,
Prentice Hall,
International Series in Computer Science,
1994,
0-13-098831-6.
Knuth, Donald E.,
The Art of Computer Programming: Volume III, Sorting and Searching,
Addison-Wesley,
1973,
0-201-89685-0,
QA76.6.K64.
Knuth, Donald E.,
Literate Programming,
In Literate Programming,
Stanford University Center for the Study of Language and Information,
Lecture Notes,
27,
1991,
0-937073-80-6 (paperback), 0-937073-81-4 (hardcover),
QA76.6 .K644 1991.
Rowe, Glenn,
An Introduction to Data Structures and Algorithms with Java,
Prentice-Hall,
1997,
0-13-857749-8,
QA76.73.
Sedgewick, Robert,
Algorithms,
Addison-Wesley
Series in Computer Sience,
1988,
0-201-06673-4,
QA76.6.
Sedgewick, Robert,
Algorithms in Java, Parts 1-4,
Addison-Wesley,
1998,
0-201-36120-5,
QA76.73.
Taylor, Paul,
Practical Foundations of Mathematics,
Cambridge University Press,
Cambridge Studies in Advanced Mathematics,
1999,
0-521-63107-6.
Weiss, Mark Allen,
Data Structures and Problem Solving Using Java,
Addison-Wesley,
1998,
0-201-54991-3,
QA76.73.
This is
www.PaulTaylor.EU/algorithms/books.html
and it was derived from algorithms/books.tex
which was last modified on 21 July 2007.