Textbook: Mark Allen Weiss. Data Structures and Problem Solving Using Java. Addison-Wesley, 4th edition, 2010. The university bookstore carries this book, which is a “required textbook” for this course. You may be able to get by with the 3rd edition (at your risk), but do not use an even earlier one.
The core topics for this course are found mainly in Chapters 18 and beyond; a few earlier chapters, such as 5, 8, and 14 are also relevant. Detailed coverage information will be announced as we progress in the semester. Most chapters in roughly the first third of the textbook, as well as some later chapters, discuss topics that are covered in the prerequisite course, COS 225. We will not be covering these topics in this course but they are important for successful completion of homeworks and tests (so it is advisable to brush up on them).
Other Readings: All the following are recommended, but not all are required. Further details and additional readings will be announced in class and may appear here as well.
This paper introduces AA-trees and includes very nice examples and figures.
This short paper is a good example of how some of the basic concepts studied in this course may be used as building blocks to solve more complex problems.
This tutorial is optional reading but I strongly suggest that everyone read it. The concepts explained here are essential for making good use of generics in Java and it is very painful to learn them the hard way (e.g., while debugging your code).
The main purpose of this paper, for this course, is providing a concrete example how data structures and related concepts find use in current research and applications. Sections I, II, and III are required reading. The rest of the paper is optional reading.
This paper provides a succinct and readable description of polyphase merging. It is a very useful supplement to the description in the textbook, which is missing many important details.