 |
Description
|
Koffman and Wolfgang bring Koffman’s successful problem-solving approach to the study of data structures. The authors embed the design and implementation of data structures into the practice of sound software engineering principles, introduced in early chapters and reinforced through the inclusion of about twenty case studies. Case studies follow a five-step process (problem specification, analysis, design, implementation, and testing) that has been adapted to object-oriented programming to focus on the selection and/or design of Java classes. Students are encouraged to think critically about the five-step process and use it in an iterative fashion. Several problems have extensive discussions of testing and include methods that automate the testing process.
In the implementation of each data structure and in the solutions of the case studies, we reinforce the message "Think, then code" by performing a thorough analysis of the design approach and expected performance before the detailed design and implementation. Students gain an understanding of why different data structures are needed, the applications they are suited for, and the advantages and disadvantages of their possible implementations. Several problems have extensive discussions of testing and include methods that automate the testing process.
Each abstract data type is presented in the context of its use, specified as a Java interface, and implemented. The Java API is used throughout. For data structures that are in the Java Collections framework, the authors present a simplified implementation that is based on the API implementation where practical. Students who complete the text will be able to use the Java Collections framework and understand how it is implemented.
Algorithm correctness and efficiency is introduced early and used throughout to assess the classes and methods used to implement a solution. Optional material on graphical user interface programming provides coverage of event-driven programming.
The text assumes a first course in programming (not necessarily Java) and is designed for the second course in programming, especially those that include coverage of OO design and algorithms. The text could carry over to the third course in data structures and algorithms for schools with a three-course sequence. There is an extensive review chapter (included as an appendix) for students who need a refresher in Java.
|