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

Author

Cay Horstmann, Ph.D.
Univ. Of Michigan-Ann Arbor

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.

Description:

Big C++: Late Objects, 3rd Edition focuses on the essentials of effective learning and is suitable for a two-semester introduction to programming sequence. This text requires no prior programming experience and only a modest amount of high school algebra. It provides an approachable introduction to fundamental programming techniques and design skills, helping students master basic concepts and become competent coders. The second half covers algorithms and data structures at a level suitable for beginning students.

  • More than 2500 autograded learning questions.
  • 230+ autograded Challenge activities and coding activities.
  • Test Bank

Instructors: Reserve your evaluation copy now!

The zyVersions Approach

zyVersions utilize the “Say, Show, Ask” approach.

Say: We use the trusted content of the textbook to explain concepts and teach students subject matter.

Show: Through animations and learning questions students can see concepts come to life.

Ask: Our built-in learning questions and homework with instant feedback encourage interactivity.

Combine Operating System Concepts With These Other zyBooks

Operating Systems Concepts is often combined with other zyBooks to give students experience with a diverse set of programming languages. Some popular titles to pair with Operating System Concepts include:

Big Java: Late Objects (2e) - Cay Horstmann
zyBook - Programming in C++ Cover Art
Data Structures Essentials