group of programmers coding with laptops




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

As the lingua franca of programming and computer systems, C is an essential language for programmers who want to work on software, websites and more. Often, programmers will also need C to debug or enhance projects.

In the Programming in C zyBook, you will learn all essential concepts of coding based on the C99 language standard. All introduced features are also compatible with C11, allowing greater flexibility when completing projects.

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 The printf and scanf functions 3.20 Debugging 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 Conditional expressions 4.15 Floating-point comparison 4.16 Short circuit evaluation 4.17 C example: Salary calculation with branches 4.18 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 pointer 7.9 Functions with array parameters 7.10 Functions with C string parameters 7.11 Functions with array parameters: Common errors 7.12 Scope of variable/function definitions 7.13 Parameter error checking 7.14 Preprocessor and include 7.15 Separate files 7.16 C example: Salary calculation with functions 7.17 C example: Domain name validation with functions

Module 6: Arrays

6.1 Array concept (general) 6.2 Arrays 6.3 Array iteration drill 6.4 Iterating through arrays 6.5 Multiple arrays 6.6 Swapping two variables (General) 6.7 Loop-modifying or copying/comparing arrays 6.8 Debugging example: Reversing an array 6.9 Two-dimensional arrays 6.10 Char arrays / C strings 6.11 String library functions 6.12 Char library functions: ctype 6.13 Arrays and strings 6.14 C example: Annual salary tax rate calculation with arrays 6.15 C example: Domain name validation with arrays

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: Recursion

11.1 Recursion: Introduction 11.2 Recursive functions 11.3 Recursive algorithm: Search 11.4 Adding output statements for debugging 11.5 Creating a recursive function 11.6 Recursive math functions 11.7 Recursive exploration of all possibilities 11.8 Stack overflow 11.9 C example: Recursively output permutations

Module 10: Input / Output

10.1 The stdout and stdin file pointers 10.2 Output formatting 10.3 Input parsing 10.4 File input and output

Module 9: Pointers

9.1 Why pointers: Pass by pointer example 9.2 Pointer basics 9.3 The malloc and free functions 9.4 Pointers with structs 9.5 String functions with pointers 9.6 The malloc function for arrays and strings 9.7 The realloc function 9.8 Vector ADT 9.9 Why pointers: A list example 9.10 A first linked list 9.11 Memory regions: Heap/Stack 9.12 Memory leaks 9.13 C example: Employee list using vector ADT

Module 8: Structs

8.1 Grouping data: struct 8.2 Structs and functions 8.3 Structs and arrays 8.4 Structs, arrays, and functions: A seat reservation example 8.5 Separate files for structs

Module 13: Additional Material

13.1 Do-while loops 13.2 Engineering examples 13.3 Command-line arguments 13.4 The #define directive 13.5 Modular compilation 13.6 Makefiles 13.7 Binary file I/O 13.8 Engineering examples using functions 13.9 Command-line arguments and files 13.10 Additional practice: Output art 13.11 Additional practice: Grade calculation 13.12 Additional practice: Tweet decoder 13.13 Additional practice: Dice statistics 13.14 zyBooks built-in programming window

Module 12: Searching and Sorting Algorithms

12.1 Searching and algorithms 12.2 Binary search 12.3 O notation 12.4 Algorithm analysis 12.5 Sorting: Introduction 12.6 Selection sort 12.7 Insertion sort 12.8 Quicksort 12.9 Merge sort


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: Right-facing arrow 2.6 Input: Mad Lib 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 Input and formatted output: House real estate summary 3.9 Musical note frequencies 3.10 Input: Welcome message 3.11 Input: Mad Lib 3.12 Warm up: Variables, input, and type conversion 3.13 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 Warm up: Automobile service cost 4.8 Program: Automobile service invoice

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 Countdown until matching digits 5.8 Output range with increment of 10 5.9 Brute force equation solver 5.10 Warm up: Drawing a right triangle 5.11 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 Remove spaces 6.10 Count input length without spaces, periods, or commas 6.11 Print string in reverse 6.12 Palindrome 6.13 Warm up: People's weights 6.14 Program: Soccer team roster

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 an array 7.16 Sort an array 7.17 Output values below an amount - functions 7.18 Adjust list by normalising - functions 7.19 Warm up: Text analyser and modifier 7.20 Program: Authoring assistant

Module 8: Structs

8.1 Warm up: Online shopping cart (Part 1) 8.2 Warm up: Online shopping cart (Part 2)

Module 9: Pointers

9.1 Warm up: Contacts 9.2 Program: Playlist

Module 10: Input / Output

10.1 Warm up: Parsing strings 10.2 Program: Data visualisation


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.