Table of Contents
1. Introduction
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. Fundamental Data Types
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. Decisions
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. Loops
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. Functions
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. Arrays and Vectors
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. Pointers and Structures
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. Streams
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. Classes
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. Inheritance
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. Recursion
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. Sorting and Searching
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. Advanced C++
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. Linked Lists, Stacks, and Queues
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. Sets, Maps, and Hash Tables
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. Tree Structures
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. Priority Queues and Heaps
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