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.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.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.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.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.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

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.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

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.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

“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

## 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
• 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

## Author

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