group of programmers looking at code.png



zyBooks: A Wiley Brand logo.png
Gen Infiniti Academy GIA Logo (words) SQ

Want to excel at system programming, game development, or animations? You'll need to be a master at C++, one of the main programming language used in application development.

In the Programming in C++ zyBook, you will learn all essential concepts of coding based on the C++14 language standard. You will also gain access to the zyLabs, an integrated online lab environment that will help to cement your newly learnt skills.

Research Proven Excellence

Preferred Choice

80% of surveyed students preferred zyBooks over regular textbooks.

Better Learning

Studies show that students learn 118% more with the minimal text model in only one lesson.

Proven Results

On average, zyBook users improved grades up to ⅔ and read 74% more than users of regular textbooks.

What is a zyBook?

In short, zyBooks are interactive, digital textbooks.


By incorporating available technology, zyBooks make learning fun, interactive and engaging – all while drastically reducing the time spent on learning theoretical concepts.

What is a zyLab?

zyLabs are online lab environments that are integrated into their respective zyBooks.

Through zyLabs, you can practice your new skills and obtain immediate feedback and grades. No additional downloading of software required.

Course Details

The Programming in C++ zyBook introduces and cements essential programming concepts with minimal text, maximum interactivity.


Module 1: How to use a zyBook

1.1 Basics 1.2 Account and platform basics 1.3 Progression challenge activities 1.4 Programming challenge activities 1.5 Feedback 1.6 zyLab basics

Module 2: Introduction to C

2.1 Programming (general) 2.2 Programming basics 2.3 Comments and whitespace 2.4 Errors and warnings 2.5 Computers and programs (general) 2.6 Computer tour 2.7 Language history 2.8 Problem solving 2.9 Why programming 2.10 Why whitespace matters 2.11 C example: Salary calculation 2.12 C example: Married-couple names

Module 3: Variables and Expressions

3.1 Variables and assignments (general) 3.2 Identifiers 3.3 Strings 3.4 Integer overflow 3.5 Arithmetic expressions (general) 3.6 Floating-point numbers (double) 3.7 Scientific notation for floating-point literals 3.8 Constant variables 3.9 Using math functions 3.10 Integer division and modulo 3.11 Type conversions 3.12 Binary 3.13 Characters 3.14 Strings 3.15 Integer overflow 3.16 Numeric data types 3.17 Unsigned 3.18 Random numbers 3.19 Debugging 3.20 Auto (since C++11) 3.21 Style guidelines 3.22 C example: Salary calculation with variables 3.23 C example: Married-couple names with variables

Module 4: Branches

4.1 If-else 4.2 More if-else 4.3 Equality and relational operators 4.4 Detecting ranges (general) 4.5 Detecting ranges with if-else statements 4.6 Logical operators 4.7 Example: Toll calculation 4.8 Order of evaluation 4.9 Switch statements 4.10 Boolean data type 4.11 String comparisons 4.12 String access operations 4.13 Character operations 4.14 More string operations 4.15 Conditional expressions 4.16 Floating-point comparison 4.17 Short circuit evaluation 4.18 C example: Salary calculation with branches 4.19 C example: Search for name using branches

Module 7: User-Defined Functions

7.1 User-defined function basics 7.2 Return 7.3 Reasons for defining functions 7.4 Functions with branches/loops 7.5 Unit testing (functions) 7.6 How functions work 7.7 Functions: Common errors 7.8 Pass by reference 7.9 Functions with string/vector parameters 7.10 Functions with C string parameters 7.11 Scope of variable/function definitions 7.12 Default parameter values 7.13 Function name overloading 7.14 Parameter error checking 7.15 Preprocessor and include 7.16 Separate files 7.17 C example: Salary calculation with functions 7.18 C example: Domain name validation with functions

Module 6: Arrays

6.1 Array/vector concept (general) 6.2 Vectors 6.3 Array/vector iteration drill 6.4 Iterating through vectors 6.5 Multiple vectors 6.6 Vector resize 6.7 Vector push_back 6.8 Loop-modifying or copying/comparing arrays 6.9 Swapping two variables (General) 6.10 Debugging example: Reversing a vector 6.11 Array vs. vectors 6.12 Two-dimensional arrays 6.13 Char arrays / C strings 6.14 String library functions 6.15 Char library functions: ctype 6.16 C example: Annual salary tax rate calculation with vectors 6.17 C example: Domain name validation with vectors

Module 5: Loops

5.1 Loops (general) 5.2 While loops 5.3 More while examples 5.4 For loops 5.5 More for loops examples 5.6 Loops and strings 5.7 Nested loops 5.8 Developing programs incrementally 5.9 Break and continue 5.10 Variable name scope 5.11 Enumerations 5.12 C example: Salary calculation with loops 5.13 C example: Domain name validation with loops

Module 11: Inheritance

11.1 Derived classes 11.2 Access by members of derived classes 11.3 Overriding class functions 11.4 Polymorphism and virtual member functions 11.5 Abstract classes: Introduction (generic) 11.6 Abstract classes 11.7 Is-a versus has-a relationships 11.8 UML 11.9 C++ example: Employees and overriding class functions 11.10 Employees using an abstract class

Module 10: Streams

10.1 Output and input streams 10.2 Output formatting 10.3 Input string stream 10.4 Output string stream 10.5 File input 10.6 C++ example: Parsing and validating input files 10.7 File output 10.8 C++ example: Saving and retrieving program data 10.9 Overloading stream operators

Module 9: Pointers

9.1 Why pointers? 9.2 Pointer basics 9.3 Operators: new, delete and -> 9.4 String functions with pointers 9.5 A first linked list 9.6 Memory regions: Heap/Stack 9.7 Destructors 9.8 Memory leaks 9.9 Copy constructors 9.10 Copy assignment operator 9.11 Rule of three 9.12 C example: Employee list using vectors

Module 8: Objects and Classes

8.1 Objects: Introduction 8.2 Using a class 8.3 Defining a class 8.4 Inline member functions 8.5 Mutators, accessors and private helpers 8.6 Initialisation and constructors 8.7 Classes and vectors/classes 8.8 Separate files for classes 8.9 Choosing classes to create 8.10 Unit testing (classes) 8.11 Constructor overloading 8.12 Constructor initialiser lists 8.13 The 'this' implicit parameter 8.14 Operator overloading 8.15 Overloading comparison operators 8.16 Vector ADT 8.17 Namespaces 8.18 Static data members and functions 8.19 C++ example: Salary calculation with classes 8.20 C++ example: Domain name availability with classes

Module 13: Exceptions

13.1 Exception basics 13.2 Exceptions with functions 13.3 Multiple handlers 13.4 C++ example: Generate number format exception

Module 12: Recursion

12.1 Recursion: Introduction 12.2 Recursive functions 12.3 Recursive algorithm: Search 12.4 Adding output statements for debugging 12.5 Creating a recursive function 12.6 Recursive math functions 12.7 Recursive exploration of all possibilities 12.8 Stack overflow 12.9 C example: Recursively output permutations

Module 17: Additional Material

17.1 Do-while loops 17.2 Arrays 17.3 Iterating through arrays 17.4 Multiple arrays 17.5 Loop-modifying or copying/comparing arrays 17.6 Debugging example: Reversing an array 17.7 Engineering examples 17.8 Functions with array parameters 17.9 Functions with array parameters: Common errors 17.10 Engineering examples using functions 17.11 Grouping data: struct 17.12 Structs and functions 17.13 Structs and vectors 17.14 Structs, vectors, and functions: A seat reservation example 17.15 Command-line arguments 17.16 Command-line arguments and files 17.17 The #define directive 17.18 Modular compilation 17.19 Makefiles 17.20 Additional practice: Output art 17.21 Additional practice: Grade calculation 17.22 Additional practice: Tweet decoder 17.23 Additional practice: Dice statistics 17.24 zyBooks built-in programming window

Module 16: Searching and Sorting Algorithms

16.1 Searching and algorithms 16.2 Binary search 16.3 O notation 16.4 Algorithm analysis 16.5 Sorting: Introduction 16.6 Selection sort 16.7 Insertion sort 16.8 Quicksort 16.9 Merge sort

Module 15: Containers

15.1 Range-based for loop 15.2 List 15.3 Pair 15.4 Map 15.5 Set 15.6 Queue 15.7 Deque 15.8 find() function 15.9 sort() function

Module 14: Templates

14.1 Function templates 14.2 Class templates 14.3 C++ example: Map values using a function template


Module 2: Introduction to C

2.1 Basics 2.2 Interleaved input / output 2.3 Formatted output: Hello World! 2.4 Formatted output: No parking sign 2.5 Input and formatted output: House real estate summary 2.6 Input and formatted output: Right-facing arrow 2.7 Warm up: Hello world 2.8 Warm up: Basic output with variables 2.9 Program: ASCII art

Module 3: Variables and Expressions

3.1 Divide by x 3.2 Driving costs 3.3 Expression for calories burned during workout 3.4 Expression for calories burned during workout 3.5 Using math functions 3.6 Phone number breakdown 3.7 Simple statistics 3.8 Musical note frequencies 3.9 Input: Welcome message 3.10 Input: Mad Lib 3.11 Warm up: Variables, input, and type conversion 3.12 Program: Painting a wall

Module 4: Branches

4.1 Remove gray from RGB 4.2 Smallest number 4.3 Interstate highway numbers 4.4 Seasons 4.5 Exact change 4.6 Leap year 4.7 Name format 4.8 Warm up: Text message abbreviation decoder 4.9 Program: Text message decoder 4.10 Program: Text message expander

Module 5: Loops

5.1 Convert to binary 5.2 Mad Lib - loops 5.3 Varied amount of input data 5.4 Count characters 5.5 Checker for integer string 5.6 Password modifier 5.7 Remove spaces 5.8 Count input length without spaces, periods, or commas 5.9 Countdown until matching digits 5.10 Output range with increment of 10 5.11 Print string in reverse 5.12 Palindrome 5.13 Brute force equation solver 5.14 Warm up: Drawing a right triangle 5.15 Program: Drawing a half arrow

Module 6: Arrays

6.1 Output numbers in reverse 6.2 Middle item 6.3 Output values below an amount 6.4 Adjust list by normalising 6.5 Word frequencies 6.6 Contains the character 6.7 Elements in a range 6.8 Two smallest numbers 6.9 Warm up: People's weights (Vectors) 6.10 Program: Soccer team roster (Vectors)

Module 7: User-Defined Functions

7.1 Miles to track laps 7.2 Step counter 7.3 A jiffy 7.4 Driving costs - functions 7.5 Swapping variables 7.6 Max magnitude 7.7 Flip a coin 7.8 Count characters - functions 7.9 Remove spaces - functions 7.10 Convert to binary - functions 7.11 Max and min numbers 7.12 Acronyms 7.13 Leap year - functions 7.14 Exact change - functions 7.15 Even/odd values in a vector 7.16 Contact list 7.17 Sort an vector 7.18 Output values below an amount - functions 7.19 Adjust list by normalising - functions 7.20 Word frequencies - functions 7.21 Replacement words 7.22 Warm up: Text analyser and modifier 7.23 Program: Authoring assistant

Module 8: Objects and Classes

8.1 Triangle area comparison (classes) 8.2 Car value (classes) 8.3 Winning team (classes) 8.4 Nutritional information (classes/constructors) 8.5 Artwork label (classes/constructors) 8.6 Warm up: Online shopping cart (Part 1) 8.7 Program: Online shopping cart (Part 2)

Module 9: Pointers

9.1 Library book sorting 9.2 Mileage tracker for a runner 9.3 Inventory (linked lists: insert at the front of a list) 9.4 Playlist (output linked list) 9.5 Grocery shopping list (linked list: inserting at the end of a list) 9.6 Warm up: Contacts 9.7 Program: Playlist

Module 10: Streams

10.1 Parsing dates 10.2 Warm up: Parsing strings 10.3 Program: Data visualisation

Module 11: Inheritance

11.1 Pet information (derived classes) 11.2 Instrument information 11.3 Course information (derived classes) 11.4 Book information (overriding member functions) 11.5 Plant information (vector)

Module 18: Coding Practice Problems

18.1 Coding practice problems overview 18.2 Expressions: Simple floating-point expression 18.3 Expressions: Distance formula 18.4 Branches: Complex cost structure 18.5 Branches: Shape display 18.6 Branches: Caption punctuation 18.7 Branches: Guitar tabs 18.8 Branches: 24-hour time 18.9 Branches: Next date 18.10 Branches: Runway headings 18.11 Branches: Listing names 18.12 Branches: Next license plate number 18.13 Loops (for): Output sequence 18.14 Loops (for): Output evens 18.15 Loops (while): Output rocket height 18.16 Loops (while): Computer modified average 18.17 Loops (nested): Sum a given number of integers 18.18 Loops: Output integer's digits 18.19 Loops: Removing leading/trailing whitespace 18.20 Loops: Password requirements 18.21 Loops (nested): HTML table 18.22 Loops: Output integers as comma-separated list 18.23 Loops: Customer lookup 18.24 Loops: Word count 18.25 Loops: Academic index score table 18.26 Loops: TV aspect ratios 18.27 Loops: Biggest difference 18.28 Loops: Check if sorted 18.29 Vectors: Find max 18.30 Vectors: Outputting multiple elements per line 18.31 Vectors: Copying only negative alues 18.32 Vectors: Binary to decimal conversion 18.33 Vectors: Bowling score 18.34 Vectors: Min, max, average 18.35 Vectors: Mode 18.36 Vectors: Grouping into ranges 18.37 Vectors: Longest sequence 18.38 Vectors: Reverse in place 18.39 Functions: Compute max 18.40 Functions: Sort three values 18.41 Functions: Calorie estimator 18.42 Functions: Rideshare pickup time 18.43 Functions: User age 18.44 Functions: Simulating waiting time (fast clerk) 18.45 Functions: Number to words 18.46 Functions: Driving cost estimator 18.47 Functions: Split cents into dollars and cents 18.48 Functions: Rectangles sizes 18.49 Functions: Electric bill 18.50 Functions: Digits to number 18.51 Functions: Commas in integer 18.52 Functions: Next char in string 18.53 Functions: Find next substring 18.54 Functions: Output guitar tabs 18.55 Functions: Rotate three values

Module 16: Searching and Sorting Algorithms

16.1 Descending selection sort with output during execution 16.2 Sorting user IDs

Module 15: Containers

15.1 Grocery shopping list (list) 15.2 Student grades (map) 15.3 Ticketing service (queue)

Module 14: Templates

14.1 What order? (function templates) 14.2 Zip code and population (class templates)

Module 13: Exceptions

13.1 Exception handling to detect input string vs. int

Module 12: Recursion

12.1 All permutations of names 12.2 Number pattern


Each purchase comes with...

Practice questions

Highly effective reading materials

1 year access

Interactive figures & tables

Online lab environment (zyLabs)

What Our Students Say

“I really enjoyed zyBooks for use in my Python class. It has surely aided my success in class and helped me build some confidence in my first year at university.”

Isaac C.

Cal State University, Long Beach

Frequently Asked Questions


Will my course fee be subsidised?

No. If you wish to join a course with course fee support*, please check out our Wiley Certified Data Analyst and Unity Certified Associate courses. *Terms & Conditions apply.


I have no prior experience. Will I be able to understand the content taught in the zyBooks?

Yes. Unless otherwise specified, all zyBooks are beginner-friendly.

How much time do I have to spend to complete the course?

It depends on your learning style and speed. We estimate taking about 48 hours to read through the material and complete the interactive quizzes at regular speed. Each zyBook comes with 1 year access, and you should have more than enough time to complete and revise the material with regular reading.

Is there a certification examination?



What is a zyBook?

zyBooks are like interactive, digital textbooks. By incorporating available technology, zyBooks make learning fun, interactive and engaging – all while drastically reducing the time spent on reading long texts.

Why should I buy a zyBook instead of a regular textbook?

zyBooks comprise the same content as a textbook but with minimal text and maximum interactivity. Interactive charts and quizzes are strategically placed, allowing students to cement newly learnt concepts. Some zyBooks also come with zyLabs, which gives immediate feedback when used. This minimises the time spent on grading and rectifying mistakes.

Do all the zyBooks you offer come with zyLabs (the interactive lab environment)?

No. If zyLabs are included, it will be specified in the course page.

What is a zyLab?

zyLabs are online lab environments that are integrated into their respective zyBooks. Through zyLabs, you can practice your new skills and obtain immediate feedback and grades. No additional downloading of software required.