Data Structures and Algorithms: Resources

Jon Jacky

Here are some resources I looked at when I was looking for a textbook for this course.

Books
Textbooks
Reference books
Online tutorials etc.
Courses elsewhere

Revised September 23, 2001. Use your browser's Reload or Refresh button to get the latest version.


Books

These books make no attempt to be comprehensive so they are not usually classified as textbooks. Nevertheless, I think they are the best introductions to the subject.

Programming Pearls, Jon Bentley, Addison-Wesley 1986, 2000, and More Programming Pearls, Jon Bentley, Addison-Wesley 1988 (out of print). These are collections of Bentley's columns from Communications of the ACM. I am using some of the original columns instead of a textbook in a course.

The Practice of Programming, Brian W. Kernighan and Rob Pike, Addison-Wesley, 1999. Chapter 2 is whirlwind 30-page survey of data structures and algorithms. Very heavy on the C programming language throughout, but a few examples in other languages. Chapter 3 develops the same program in C, Java, C++, Awk and Perl.

Algorithmics: The Spirit of Computing, David Harel, Addison-Wesley, 1992. Great stuff, as are Harel's other books.

The New Turing Omnibus, A. K. Dewdney, Computer Science Press/Freeman, 1993. A tour of computer science in 66 lively chapters. Dewdney's other books and Scientific American columns are also worth a look.

The AWK Programming Language, Alfred Aho, Brian Kernighan, and Peter J. Weinberger, Addison-Wesley, 1988. Chapter 7, Experiments with Algorithms, is particularly pertinent.

Mastering Algorithms with Perl, John Orwant, Jarkko Heitaniemi, John Macdonald. O'Reilly, 1999. Great topic coverage, clear diagrams and lively explanations. Code samples are all Perl, they say it's not for Perl beginners, but you could probably figure it out. Great value, as comprehensive as the textbooks (below) but less than half the price.


Textbooks

I considered assigning one of these, but there is much more material in them than we could possibly cover in one quarter, and they cost a lot. I concluded it was a better value to use one of the lively books (above) supplemented by the reference books and online materials (below). I list these in descending order of suitability/relevance to our course. These all use Java, there are similar books (often by the same authors) that use C++ and other languages. The web sites for the books sometimes provide lots of code, animations, and other stuff.

Data Structures in Java, Thomas Standish, Addison-Wesley, 1998.

Data Structures and Problem Solving Using Java, Mark Allen Weiss, Addison-Wesley, 1998.

Data Structures and Algorithms in Java, Michael T. Goodrich and Roberto Tamassia, Wiley, 2000.

Data Structures, Algorithms, and Applications in Java, Sartaj Sahni, McGraw-Hill, 1999.

Java: Data Structures and Programming, Liwu Li, Springer-Verlag, 1998.


Reference Books

The Art of Computer Programming, Donald Knuth, Addison-Wesley. In three volumes, with more promised. The nearest thing we have to a Bible in computer science.

Introduction to Algorithms, Cormen, Rivest, Leisersen and Stein, MIT Press, 2001. Introduction? This thing has almost 1200 pages!


Online tutorials, code, animations, etc.

Directories and indexes:

Dictionary of Algorithms, Data Structures, and Problems
http://hissa.nist.gov/dads/

The Stony Brook Algorithm Repository
Based on The Algorithm Design Manual by Steven Skiena, but links to much more
http://www.cs.sunysb.edu/~algorith/

Algorithms and Data Structures Directory
Links to lecture notes, courses, etc. The books to download are quite advanced.
http://www.oopweb.com/Algorithms/Files/Algorithms.html

Godfried Toussaint's links, including his own on-line textbook (some broken links)
http://cgm.cs.mcgill.ca/~godfried/teaching/algorithms-web.html

Textbooks on the web:

Data Structures and Algorithms by John Morris
Complete textbook, many topics, very nicely designed. Examples in C.
No way to print out the whole thing, must read (or print) from browser.
http://www.oopweb.com/Algorithms/Documents/PLDS210/VolumeFrames.html
http://swww.ee.uwa.edu.au/~plsd210/ds/ds_ToC.html (without frames)

A Compact Guide to Sorting and Searching by Thomas Niemann
Includes nice intro. on arrays, linked lists, big O. Nice diagrams and tables. Pascal, C, and Visual Basic.
Can also download hardcopy version (from bottom of introduction page)
http://www.oopweb.com/Algorithms/Documents/Sman/VolumeFrames.html

Data Structures and Algorithms with Object-Oriented Design Patterns in Java by Bruno Preiss
On-line version of a published book. Links to applets, code
http://dictator.uwaterloo.ca/Bruno.Preiss/books/opus5/main.html

Course notes, lecture slides:

What's Computer Science About? Mike Spivey
Nice little lecture on the Greatest Commmon Divisor algorithim, with diagrams
http://oldwww.comlab.ox.ac.uk/oucl/users/mike.spivey/openday/compsci1.html

Data Structures and Algorithms: notes from Cambridge University, UK
Supplement to textbooks, nice summaries and ASCII-art diagrams (PostScript)
http://www.cl.cam.ac.uk/Teaching/2000/DSAlgs/dsa.ps

Data Structures and Programming, Steven Skiena (in Modula 3)
http://www.cs.sunysb.edu/~skiena/214/lectures/index.html

Analysis of Algorithms, Steven Skiena (in pseudocode)
http://www.cs.sunysb.edu/~algorith/lectures-good/ps/ps.html (PostScript)
http://www.cs.sunysb.edu/~algorith/lectures-good/ (with audio!)

Computer Programming 501 Curtin University, Australia
Quite a bit less polished than the preceeding
http://weed.cs.curtin.edu.au/units/cp501/notes/contents1.html

Algorithm animations:

Animated Algorithms by Woi Ang, Chein Wei Tan, Mervyn Ng
Several sorting, searching, graph algorithms. Accompany Morris' book (above). Well done. C.
http://www.oopweb.com/Algorithms/Documents/AnimatedAlgorithms/VolumeFrames.html
http://swww.ee.uwa.edu.au/~plsd210/ds/alg_anim.html (without frames)

Applets by Dave Kennedy, University of Liverpool
Linked lists, stacks, queues, trees, and more. Nice and simple, with code (Java)
http://www.csc.liv.ac.uk/~davek/comp102/

Algorithm Animation Links. Some nice ones, others without explanations or code, some broken links
http://www.cs.oswego.edu/~birgit/html/diplom/links.html

Directories of on-line computer books in many genres:

Computer books, tutorials, lecture notes
http://www.monumental.com/boat/compsciBooks.html `

Computer Education, Training, and Tutorial Resources
first link is a table (scroll down), second link is a list
http://www.intelinfo.com/
http://www.intelinfo.com/free_computer_books.html


Unusual courses offered elsewhere

Algorithms in the Real World: cryptography, search engines, molecular biology and more
http://www.cs.cmu.edu/~guyb/realworld.html

Computational Biology: DNA, evolution, and more
http://www.cs.washington.edu/education/courses/590bi/
http://www.cs.washington.edu/education/courses/590bi/98wi/ (scroll down for topics)

Algorithms, Game Theory, and the Internet (advanced, scroll down for links to papers)
http://www.cs.berkeley.edu/~christos/games/cs294.html


Jon Jacky, jackyj@evergreen.edu