The course book is Data Structures and Algorithm Analysis in Java, 3rd edition, by Mark Allen Weiss. It teaches both how to design data structures and how to take advantage of them in programming. There is a website where you can download all the example code from the book.
I try to keep the lectures self-contained, so if you do not want to buy the book you will probably be OK. However, many of the exercises will come from the book. The book will probably be especially helpful if you are not confident with Java programming.
The books in this section are not part of the course, but if you want to learn more I can recommend them.
One of the real classic computer science books (and one of my favourites) is Programming Pearls by Jon Bentley, 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 a) well written, b) quite short and c) quite cheap. If you read it you will be a better programmer!
If you do not like the look of Weiss’s book, another good data structures textbook is 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. It is perhaps slightly more advanced than Weiss’s book.
The course does not cover data structures in functional languages. If you are interested in learning more about these, 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.