Java: A Framework for Program Design and Data Structures by Kenneth Alfred Lambert
This work focuses on traditional CS2 data structures topics, while developing object-oriented programs. The software life cycle is emphasized throughout, with numerous case studies of varying size and complexity. The first half of the book covers program design with classes, inheritance, polymorphism, recursion and complexity analysis. The second half addresses the standard abstract data types (ADTs) - stack, queue, list, tree, set, table and graph - including discussions of different implementations, applications and the complexity of each ADT. Wherever possible, the book uses the abstract data types in the Java 2 Collections Framework. A final chapter on multithreading and synchronization provides a transition to follow-on courses in computer science. The book provides two add-on software packages that enable students to build easy graphical user interfaces, and extend the Java 2 Collections Framework to include all the relevant abstract data types.