| Objects First Approach. Object-oriented principles are introduced early and used throughout in the problem-solving process and in the design and use of Java classes. Judicious use of UML diagrams that show relationships between classes emphasize the advantages of good class design and software reuse.
Data structures are taught in the context of software engineering principles. Early chapters present software engineering concepts, efficiency, and testing; the data structures chapters apply these principles to the design and implementation of data structures needed to solve particular problems. 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. Emphasis on documentation is provided through the use of javadoc-style comments for classes and methods including preconditions and postconditions where appropriate.
Case studies reinforce good programming practice. Case studies follow a five-step process, sometimes iterative, to model the software engineering principles used in industry: problem specification, analysis, design, implementation, and testing. This process encourages students to think before they code and work through the design decisions to be made before a solution is implemented. The importance of testing is reinforced in each case study through discussion of test cases relevant to the solution. Several case studies illustrate design principles by revisiting earlier problems to show how they may be solved or a solution refined with a different data structure.
Emphasis on the Java API and the Collections framework. Students learn about data structures in the context of Java programming. For data types that are implemented in Java, the text presents a simplified version of the actual Java implementation. Students are encouraged throughout the text to use the Java API as a resource for their programming and to better understand how data types are implemented in Java. For data types not in the Java Collections framework, a Java interface is created to capture the specification upon which the implementation is based.
Optional coverage of event-driven programming. A chapter-length appendix on graphical user interface programming teaches the fundamentals of event-driven programming. Several applications throughout the text offer practice with GUI programming using Swing's JOptionPane class. There are some examples of applications with user-defined GUI classes; however, the GUI classes are kept separate from the classes that solve the problem and are discussed on the website. This reinforces good program design and makes it possible for the instructor to keep the design of GUI classes optional.
Pedagogy that supports learning programming and data structures. Programming Pitfall, Design Concept, and Programming Practice boxes help students with common problems and provide tips for becoming better programmers. Syntax boxes are a quick reference for the Java structures they are learning. Self-check and end-of-section exercises provide immediate feedback and practice for students as they work through the chapter. Review exercises and longer programming projects in each chapter give students a variety of skill-building activities.
|