Dale, Joyce, and Weems present the algorithmic, programming, and structuring techniques of a traditional data structures course in an object-oriented context. They stress software engineering principles throughout, including modularization, information hiding, data abstraction, stepwise refinement, using visual aids, analyzing algorithms, and software verification methods. As the data structure coverage unfolds, they introduce and use the appropriate Java constructs that support their primary goal. They say that using the Java programming language as a vehicle for solving problems allows students to expand their familiarity with a modern programming language and the object-oriented paradigm. Annotation ©2016 Ringgold, Inc., Portland, OR (protoview.com)