In The Art and Science of Java, Stanford professor and well-known leader in CS Education Eric Roberts emphasizes the student-friendly exposition that led to the success of The Art and Science of C. By following the recommendations of the Association of Computing Machinery’s Java Task Force, this first edition text adopts a modern objects-first approach that introduces students to useful hierarchies from the very beginning. Packages are translated into a minimally complex collection of pedagogical resources that make it easier to teach Java while retaining the language’s industrial strength.
 Chapter 1. Introduction
 1.1 A Brief History of Computing
 1.2 What Is Computer Science?
 1.3 A Brief Tour of Computer Hardware
 1.4 Algorithms
 1.5 Stages in the Programming Process
 1.6 Java and the Object-Oriented Paradigm
 1.7 Java and the World Wide Web
 
 Chapter 2. Programming by Example
 2.1 The “Hello World” Program
 2.2 Perspectives on the Programming Process
 2.3 A Program to Add Two Numbers
 2.4 Programming Idioms and Patterns
 2.5 Classes and Objects
 2.6 Graphical Programs
 
 Chapter 3. Expressions
 3.1 Primitive Data Types
 3.2 Constants and Variables
 3.3 Operators and Operands
 3.4 Assignment Statements
 3.5 Boolean Expressions
 3.6 Designing for Change
 
 Chapter 4. Statement Forms
 4.1 Statement Types in Java
 4.2 Control Statements and Problem Solving
 4.3 The if Statement
 4.4 The switch Statement
 4.5 The while Statement
 4.6 The for Statement
 
 Chapter 5. Methods
 5.1 A Quick Overview of Methods
 5.2 Writing Your Own Methods
 5.3 Mechanics of the Method-Calling Process
 5.4 Decomposition
 5.5 Algorithmic Methods
 
 Chapter 6. Objects and Classes
 6.1 Using the RandomGenerator Class
 6.2 The javadoc Documentation System
 6.3 Defining Your Own Classes
 6.4 Representing Student Information
 6.5 Rational Numbers
 6.6 Extending Existing Classes
 
 Chapter 7. Objects and Memory
 7.1 The Structure of Memory
 7.2 The Allocation of Memory to Variables
 7.3 Primitive Types versus Objects
 7.4 Linking Objects Together
 
 Chapter 8. Strings and Characters
 8.1 The Principle of Enumeration
 8.2 Characters
 8.3 Strings as an Abstract Idea
 8.4 Using the Methods in the String Class
 8.5 A Case Study in String Processing
 
 Chapter 9. Object-Oriented Graphics
 9.1 The acm.graphics Model
 9.2 Structure of the acm.graphics Package
 9.3 Using the Shape Classes
 9.4 Creating Compound Objects
 
 Chapter 10. Event-Driven Programs
 10.1 The Java Event Model
 10.2 A Simple Event-Driven Program
 10.3 Responding to Mouse Events
 10.4 Responding to Keyboard Events
 10.5 Creating a Simple GUI
 10.6 The Swing Interactor Hierarchy
 10.7 Managing Component Layout
 10.8 Using the TableLayout Class
 
 Chapter 11. Arrays and ArrayLists
 11.1 Introduction to Arrays
 11.2 Internal Representation of Arrays
 11.3 Passing Arrays as Parameters
 11.4 Using Arrays for Tabulation
 11.5 Initialization of Arrays
 11.6 Multidimensional Arrays
 11.7 Image Processing
 11.8 The ArrayList Class
 Chapter 12. Searching and Sorting
 12.1 Searching
 12.2 Sorting
 12.3 Assessing Algorithmic Efficiency
 12.4 Using Data Files
 
 Chapter 13. Collection Classes
 13.1 The ArrayList Class Revisited
 13.2 The HashMap Class
 13.3 The Java Collections Framework
 13.4 Principles of Object-Oriented Design
 
 Chapter 14. Looking Ahead
 14.1 Recursion
 14.2 Concurrency
 14.3 Using the Network
 14.4 Programming Patterns
