Books

We don't have an official course book, since the lectures are fairly self-contained and you can find so much online. If you feel like buying a book anyway, we can recommend Algorithms, by Robert Sedgewick and Kevin Wayne. This is an excellent book that covers much of the stuff in the course in a very clear way.

If you have Sedgewick's book, then the course covers most of chapters 1-3 (Fundamentals, Sorting, Searching) and some of chapter 4 (Graphs). The main differences are:

Note that this is not meant to be an exhaustive list; you should look at the lectures to see everything in the course.

One of the real classic computer science books is Programming Pearls by Jon Bentley (ISBN 9780201657883), and it's very relevant for the course. It's a collection of articles, most of them describing an imaginative solution to some programming problem. It's also well written and quite short. If you read it you will be a better programmer!

Here is a Haskell compendium (in Swedish) which contains implementations of several data structures and algorithms from the course. The code from the compendium is also available.

For data structures in functional languages, the classic reference is Chris Okasaki's book, Purely Functional Data Structures. Instead of buying the book, you can download his PhD thesis, which contains much of the same stuff.

If you want to brush up on your Haskell skills, try Learn You a Haskell for Great Good. You can read it free online.

Real World Haskell is also good, and also free to read online.

Two nice sites for visualising data structures are VisuAlgo and Data Structure Visualizations.

Online API references

For doing the labs you will want to look up library documentation: Java collections library, Haskell standard libraries.