Programming Abstractions in Java : 9780134421186

Programming Abstractions in Java

Published by
Pearson Higher Ed USA
Available on demand
Title type
Title type

For courses in Java Data Structures.


Programming Abstractions in Java is intended for use in the second programming course in most college or university curriculum. Stanford University’s Eric Roberts employs a novel strategy called the client-first approach while maintaining full coverage of the CS2 curriculum. In the traditional approach, students learn how to use a particular data structure, how to implement it, and what its performance characteristics are—all at the same time. Roberts exposes the weakness of this model. In short, students are trying to understand how a structure is implemented before they have mastered how one would use that structure in an application.


With Programming Abstractions in Java and Roberts’s client-first approach, students learn how to use the full set of collection classes before they tackle any implementation issues. By tackling compelling, real-world assignments in which they use the collection classes as clients, students gain a firm sense of the underlying data model and how each structure can be used. Once they have had time to master the client-side perspective, students are ready to explore the range of possible implementations and their associated computational characteristics. They can also begin to learn the software development skills so desperately needed in the technology industry today.

Table of contents
  • 1. Overview of Java
  • 2. Methods
  • 3. Strings
  • 4. Files
  • 5. Arrays
  • 6. Collections
  • 7. Classes and Objects
  • 8. Inheritance
  • 9. Recursive Strategies
  • 10. Backtracking Algorithms
  • 11. Algorithmic Analysis
  • 12. Efficiency and Representation
  • 13. Linear Structures
  • 14. Maps
  • 15. Trees
  • 16. Sets
  • 17. Graphs
  • 18. Expression Trees
  • 19. Using Function as Data
Features & benefits

Programming Abstractions in Java provides the following features to facilitate learning:


Prepare students to bridge the gap between the future of the high-tech industry and the short supply of trained developers and engineers

  • Extensive examples and exercises ensure that students move beyond simply reading about algorithmic techniques and learn to apply algorithms in practice.
  • Learning how to develop and maintain large systems allows students to explore such issues as data representation, efficiency, security, correctness and modularity.
  • Algorithms and strategies as monuments to human creativity give students a look at implementation strategies new and old–some invented in the last decade and some more than 2000 years old.
  • Working through exercises and debugging in early attempts prompts students to apply the learned material to solve problems.
  • The overall content lays the groundwork for understanding advanced topics in programming and the broader field of computer science.


Help students solve problems in a new way using the “client-first approach”

  • Stanford University’s “client-first approach” allows students to gain a better understanding of the underlying data model and how each structure can be used.
  • Learning how to use Java’s standard collection classes enables students to master the tools they need to write effective applications.
  • Presenting the client-side perspective early allows students to understand how data structures are used before exploring the range of possible implementations and their associated computational characteristics.
  • Roberts's clear presentation of the “client-first approach” builds on the tremendous success of this approach at Stanford University.
  • The material in the text is covered in a traditional CS2 course, as defined in the Curriculum ’78 report prepared by the Association for Computing Machinery (ACM).  It also includes most of the topics specified for the CS102O and CS103O courses, asdefined by the Joint ACM/IEEE-CS Computing Curricula 2001 report and the material in the AL/Fundamental Data Structures and Algorithms unit from Computer Science Curricula 2013
Author biography

Eric Roberts is the Charles Simonyi Professor of Computer Science, emeritus, at Stanford University.  Throughout his career, Roberts was a widely acknowledged leader in computer science education and received numerous national and international awards, including the Outstanding Contribution to Computer Science Education Award from the Association for Computing Machinery’s Special Interest Group in Computer Science Education (ACM SIGCSE), the Karl V. Karlstrom Outstanding Educator Award from the ACM, and the Taylor Booth Education Award from the Institute for Electrical and Electronic Engineers Computer Society (IEEE-CS).  Programming Abstractions in Java is his seventh book.

Student supplements