Table of Contents

   1.1 What Is Programming?

   1.2 The Anatomy of a Computer

   1.3 Computing  and  Society: Computers Are Everywhere

   1.4 Machine Code and Programming Languages

   1.5 Computing  and  Society: Standards Organizations

   1.6 Becoming Familiar with Your Programming Environment

   1.7 Analyzing Your First Program

   1.8 Special Topic: Escape Sequences

   1.9 Errors

   1.10 Problem Solving: Algorithm Design

   1.11 How To: Describing an Algorithm with Pseudocode

   1.12 Worked Example: Writing an Algorithm for Tiling a Floor

   1.13 Chapter Summary

   1.14 Review Exercises

   1.15 Practice Exercises

   1.16 Programming Projects

   1.17 Interactive Chapter Review

   1.18 Interactive Practice

   2.1 Variables

   2.2 Special Topic: Numeric Types in C++

   2.3 Special Topic: Numeric Ranges and Precisions

   2.4 Special Topic: Defining Variables with auto

   2.5 Arithmetic

   2.6 Special Topic: Casts

   2.7 Special Topic: Combining Assignment and Arithmetic

   2.8 Computing  and  Society: The Pentium Floating-Point Bug

   2.9 Input and Output

   2.10 Problem Solving: First Do It By Hand

   2.11 Worked Example: Computing Travel Time

   2.12 How To: Carrying out Computations

   2.13 Worked Example: Computing the Cost of Stamps

   2.14 Strings

   2.15 Computing  and  Society: International Alphabets and Unicode

   2.16 Chapter Summary

   2.17 Review Exercises

   2.18 Practice Exercises

   2.19 Programming Projects

   2.20 Interactive Chapter Review

   2.21 Interactive Practice: Variables

   2.22 Interactive Practice: Arithmetic

   2.23 Interactive Practice: Formatted Output and Strings

   2.24 Interactive Practice: First Do It By Hand

   3.1 The if Statement

   3.2 Special Topic: The Conditional Operator

   3.3 Comparing Numbers and Strings

   3.4 Special Topic: Lexicographic Ordering of Strings

   3.5 How To: Implementing an if Statement 

   3.6 Worked Example: Extracting the Middle

   3.7 Computing  and  Society: Dysfunctional Computerized Systems

   3.8 Multiple Alternatives

   3.9 Special Topic: The switch Statement

   3.10 Nested Branches

   3.11 Problem Solving: Flowcharts

   3.12 Problem Solving: Test Cases

   3.13 Boolean Variables and Operators

   3.14 Special Topic: Short-Circuit Evaluation of Boolean Operators

   3.15 Special Topic: De Morgan’s Law

   3.16 Application: Input Validation

   3.17 Computing  and  Society: Artificial Intelligence

   3.18 Chapter Summary

   3.19 Review Exercises

   3.20 Practice Exercises

   3.21 Programming Projects

   3.22 Interactive Chapter Review

   3.23 Interactive Practice: Simple Conditions

   3.24 Interactive Practice: Complex Conditions

   3.25 Interactive Practice: Points on a Line and in a Plane

   4.1 The while Loop

   4.2 Computing  and  Society: The First Bug

   4.3 Problem Solving: Hand-Tracing

   4.4 The for Loop

   4.5 The do Loop

   4.6 Processing Input

   4.7 Special Topic: Clearing the Failure State

   4.8 Special Topic: The Loop-and-a-Half Problem and the break Statement

   4.9 Special Topic: Redirection of Input and Output

   4.10 Problem Solving: Storyboards

   4.11 Common Loop Algorithms

   4.12 How To: Writing a Loop

   4.13 Worked Example: Credit Card Processing

   4.14 Nested Loops

   4.15 Worked Example: Manipulating the Pixels in an Image

   4.16 Problem Solving: Solve a Simpler Problem First

   4.17 Random Numbers and Simulations

   4.18 Computing  and  Society: Digital Piracy

   4.19 Chapter Summary

   4.20 Review Exercises

   4.21 Practice Exercises

   4.22 Programming Projects

   4.23 Interactive Chapter Review

   4.24 Interactive Practice: while Loops

   4.25 Interactive Practice: Loop Tracing

   4.26 Interactive Practice: for Loops

   4.27 Interactive Practice: do/while Loops

   4.28 Interactive Practice: Algorithms

   4.29 Interactive Practice: Nested Loops

   4.30 Interactive Practice: Solve a Simpler Problem First

   4.31 Interactive Practice: Random Numbers

   5.1 Functions as Black Boxes

   5.2 Implementing Functions

   5.3 Parameter Passing

   5.4 Return Values

   5.5 Special Topic: Function Declarations

   5.6 How To: Implementing a Function 

   5.7 Worked Example: Generating Random Passwords

   5.8 Worked Example: Using a Debugger

   5.9 Functions Without Return Values

   5.10 Problem Solving: Reusable Functions

   5.11 Problem Solving: Stepwise Refinement

   5.12 Worked Example: Calculating a Course Grade

   5.13 Variable Scope and Global Variables

   5.14 Reference Parameters

   5.15 Special Topic: Constant References 

   5.16 Recursive Functions (Optional)

   5.17 How To: Thinking Recursively

   5.18 Computing  and  Society: The Explosive Growth of Personal Computers

   5.19 Chapter Summary

   5.20 Review Exercises

   5.21 Practice Exercises

   5.22 Programming Projects

   5.23 Interactive Chapter Review

   5.24 Interactive Practice: Simple Methods

   5.25 Interactive Practice: Reuse and Refinement

   5.26 Interactive Practice: Recursion

   6.1 Arrays

   6.2 Computing  and  Society: Computer Viruses

   6.3 Common Array Algorithms

   6.4 Special Topic: Sorting with the C++ Library

   6.5 Special Topic: A Sorting Algorithm

   6.6 Special Topic: Binary Search

   6.7 Arrays and Functions

   6.8 Special Topic: Constant Array Parameters

   6.9 Problem Solving: Adapting Algorithms

   6.10 How To: Working with Arrays

   6.11 Worked Example: Rolling the Dice

   6.12 Problem Solving: Discovering Algorithms by Manipulating Physical Objects

   6.13 Two-Dimensional Arrays

   6.14 Worked Example: A World Population Table

   6.15 Vectors

   6.16 Special Topic: The Range-Based for Loop

   6.17 Chapter Summary

   6.18 Review Exercises

   6.19 Practice Exercises

   6.20 Programming Projects

   6.21 Interactive Chapter Review

   6.22 Interactive Practice: Simple Arrays

   6.23 Interactive Practice: Algorithms

   6.24 Interactive Practice: Adapting Algorithms

   6.25 Interactive Practice: Two-Dimensional Arrays

   6.26 Interactive Practice: Vectors

   7.1 Defining and Using Pointers

   7.2 Special Topic: Pointers and References

   7.3 Arrays and Pointers

   7.4 Special Topic: Using a Pointer to Step Through an Array 

   7.5 Special Topic: Constant Pointers

   7.6 C and C++ Strings

   7.7 Special Topic: Working with C Strings

   7.8 Dynamic Memory Allocation

   7.9 Arrays and Vectors of Pointers

   7.10 Problem Solving: Draw a Picture

   7.11 How To: Working with Pointers

   7.12 Worked Example: Producing a Mass Mailing

   7.13 Computing  and  Society: Embedded Systems

   7.14 Structures

   7.15 Pointers and Structures

   7.16 Special Topic: Smart Pointers

   7.17 Chapter Summary

   7.18 Review Exercises

   7.19 Practice Exercises

   7.20 Programming Projects

   7.21 Interactive Chapter Review

   8.1 Reading and Writing Text Files

   8.2 Reading Text Input

   8.3 Special Topic: Stream Failure Checking

   8.4 Writing Text Output

   8.5 Special Topic: Unicode, UTF-8, and C++ Strings

   8.6 Parsing and Formatting Strings

   8.7 Command Line Arguments

   8.8 Computing  and  Society: Encryption Algorithms

   8.9 How To: Processing Text Files

   8.10 Worked Example: Looking for for Duplicates

   8.11 Random Access and Binary Files

   8.12 Computing  and  Society: Databases and Privacy

   8.13 Chapter Summary

   8.14 Review Exercises

   8.15 Practice Exercises

   8.16 Programming Projects

   8.17 Interactive Chapter Review

   8.18 Interactive Practice: Reading and Writing Files

   8.19 Interactive Practice: Text Input and Output

   9.1 Object-Oriented Programming

   9.2 Implementing a Simple Class

   9.3 Specifying the Public Interface of a Class

   9.4 Designing the Data Representation

   9.5 Member Functions

   9.6 Constructors

   9.7 Special Topic: Overloading

   9.8 Special Topic: Initializer Lists

   9.9 Special Topic: Universal and Uniform Initialization Syntax

   9.10 Problem Solving: Tracing Objects

   9.11 How To: Implementing a Class

   9.12 Worked Example: Implementing a Bank Account Class

   9.13 Computing  and  Society: Electronic Voting Machines

   9.14 Problem Solving: Discovering Classes

   9.15 Separate Compilation

   9.16 Pointers to Objects

   9.17 Problem Solving: Patterns for Object Data

   9.18 Computing  and  Society: Open Source and Free Software

   9.19 Chapter Summary

   9.20 Review Exercises

   9.21 Practice Exercises

   9.22 Programming Projects

   9.23 Interactive Chapter Review

   9.24 Interactive Practice: Understanding Classes

   9.25 Interactive Practice: Implementing Classes

   10.1 Inheritance Hierarchies

   10.2 Implementing Derived Classes

   10.3 Special Topic: Calling the Base-Class Constructor

   10.4 Overriding Member Functions

   10.5 Virtual Functions and Polymorphism

   10.6 Special Topic: Virtual Self-Calls

   10.7 How To: Developing an Inheritance Hierarchy

   10.8 Worked Example: Implementing an Employee Hierarchy for Payroll Processing

   10.9 Computing  and  Society: Who Controls the Internet?

   10.10 Chapter Summary

   10.11 Review Exercises

   10.12 Practice Exercises

   10.13 Programming Projects

   10.14 Interactive Chapter Review

   10.15 Interactive Practice: Inheritance

   10.16 Interactive Practice: Polymorphism

   11.1 Triangle Numbers

   11.2 How To: Thinking Recursively

   11.3 Worked Example: Finding Files

   11.4 Recursive Helper Functions

   11.5 The Efficiency of Recursion

   11.6 Permutations

   11.7 Mutual Recursion

   11.8 Backtracking

   11.9 Worked Example: Towers of Hanoi

   11.10 Computing  and  Society: The Limits of Computation

   11.11 Chapter Summary

   11.12 Review Exercises

   11.13 Practice Exercises

   11.14 Programming Projects

   11.15 Interactive Chapter Review

   11.16 Interactive Practice: Simple Recursion

   11.17 Interactive Practice: Complex Recursion

   12.1 Selection Sort

   12.2 Profiling the Selection Sort Algorithm

   12.3 Analyzing the Performance of the Selection Sort Algorithm

   12.4 Special Topic: Oh, Omega, and Theta

   12.5 Special Topic: Insertion Sort

   12.6 Merge Sort

   12.7 Analyzing the Merge Sort Algorithm

   12.8 Special Topic: The Quicksort Algorithm

   12.9 Searching

   12.10 Special Topic: Defining an Ordering for Sorting Objects

   12.11 Problem Solving: Estimating the Running Time of an Algorithm

   12.12 Worked Example: Enhancing the Insertion Sort Algorithm

   12.13 Computing  and  Society: The First Programmer 

   12.14 Chapter Summary

   12.15 Review Exercises

   12.16 Practice Exercises

   12.17 Programming Projects

   12.18 Interactive Chapter Review

   12.19 Interactive Practice: Additional Practice

   13.1 Operator Overloading

   13.2 Special Topic: Overloading Increment and Decrement Operators

   13.3 Special Topic: Implicit Type Conversions

   13.4 Special Topic: Returning References

   13.5 Worked Example: A Fraction Class

   13.6 Automatic Memory Management

   13.7 Special Topic: Virtual Destructors

   13.8 Special Topic: Suppressing Automatic Generation of Memory Management Functions

   13.9 Special Topic: Move Operations

   13.10 Special Topic: Shared Pointers

   13.11 Worked Example: Tracing Memory Management of Strings

   13.12 Templates

   13.13 Special Topic: Non-Type Template Parameters

   13.14 Chapter Summary

   13.15 Review Exercises

   13.16 Practice Exercises

   13.17 Programming Projects

   13.18 Interactive Chapter Review

   14.1 Using Linked Lists

   14.2 Implementing Linked Lists

   14.3 Worked Example: Implementing a Linked List Template

   14.4 The Efficiency of List, Array, and Vector Operations

   14.5 Stacks and Queues

   14.6 Implementing Stacks and Queues

   14.7 Stack and Queue Applications

   14.8 Special Topic: Reverse Polish Notation

   14.9 Chapter Summary

   14.10 Review Exercises

   14.11 Practice Exercises

   14.12 Programming Projects

   14.13 Interactive Chapter Review

   14.14 Interactive Practice: Additional Practice

   15.1 Sets

   15.2 Maps

   15.3 Special Topic: Multisets and Multimaps

   15.4 Worked Example: Word Frequency

   15.5 Implementing a Hash Table

   15.6 Special Topic: Implementing Hash Functions

   15.7 Special Topic: Open Addressing

   15.8 Chapter Summary

   15.9 Review Exercises

   15.10 Practice Exercises

   15.11 Programming Projects

   15.12 Interactive Chapter Review

   16.1 Basic Tree Concepts

   16.2 Binary Trees

   16.3 Worked Example: Building a Huffman Tree

   16.4 Binary Search Trees

   16.5 Tree Traversal

   16.6 Red-Black Trees

   16.7 Worked Example: Implementing a Red-Black Tree

   16.8 Chapter Summary

   16.9 Review Exercises

   16.10 Practice Exercises

   16.11 Programming Projects

   16.12 Interactive Chapter Review

   17.1 Priority Queues

   17.2 Worked Example: Simulating a Queue of Waiting Customers

   17.3 Heaps

   17.4 The Heapsort Algorithm

   17.5 Chapter Summary

   17.6 Review Exercises

   17.7 Practice Exercises

   17.8 Programming Projects

   17.9 Interactive Chapter Review

The interactive zyBooks version of a classic introduction to programming

The Big C++: Late Objects zyVersion offers the complete contents of the 3rd edition of this popular textbook, plus new immersive activities and integrated live coding to help beginning programmers learn faster and more effectively.

  • Suitable for a two-semester introduction to programming sequence
  • Focuses on fundamental programming techniques and design skills, helping students master basic concepts and become competent coders
  • Includes over 230 auto-graded challenge and coding activities, and more than 2,500 learning questions
  • Adopters have access to an integrated test bank with over 1800 questions

“In a CS1 course, you want to stress concepts that will prepare students for advanced learning, not just teach them a programming language; in our book we purposefully go deeper to give students that foundation.”
Author Cay Horstmann

Dr. Cay Horstmann on the benefits of teaching with zyBooks

What is a zyVersion?

zyVersions are leading print titles converted and adapted to zyBooks’ interactive learning platform, allowing for a quick and easy transition to an engaging digital experience for instructors and students.

zyBooks’ web-native content helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)

This zyVersion of Big C++ Late Objects benefits both students and instructors:

  • Instructor benefits
  • Customize your course by reorganizing existing content or adding your own
  • Continuous publication model updates your course with the latest content and technologies
  • Robust reporting gives you insight into students’ progress, reading and participation
  • Animations and other interactive content can be shown in presentation mode and used during a lecture
  • Student benefits
  • Learning questions and other content serve as an interactive form of reading
  • Instant feedback on labs and homework
  • Concepts come to life through extensive animations embedded into the interactive content
  • Save chapters as PDFs to reference the material at any time

Animated learning activity embedded into the Big C++ Late Objects zyVersion:

Author

Cay Horstmann, PhD
Professor of Computer Science, San Jose State University

Instructors: Interested in evaluating this zyBook for your class?

Check out these related zyBooks