Table of Contents

1.1 Programming (general)
1.2 Programming basics
1.3 Comments and whitespace
1.4 Brief history
1.5 Computers all around us
1.6 Representing information as bits
1.7 Problem solving
1.8 Why programming
1.9 Why whitespace matters
1.10 Code and pseudocode

2.1 Variables and assignments (general)
2.2 Variables (integer)
2.3 Identifiers
2.4 Arithmetic expressions (general)
2.5 Arithmetic expressions (integer)
2.6 Example: Health data
2.7 Floating-point numbers (float)
2.8 Using math functions
2.9 Random numbers
2.10 Integer division
2.11 Type conversions
2.12 Modulo operator
2.13 Data types
2.14 Constants
2.15 Code: Variables and assignments

3.1 Branches
3.2 More branches
3.3 Equality and relational operators
3.4 Detecting ranges using branches
3.5 Logical operators
3.6 Order of evaluation
3.7 Example: Toll calculation
3.8 Floating-point comparison
3.9 Code: Branches
3.10 Code: More branches

4.1 Loops (general)
4.2 Loop basics
4.3 More loop examples
4.4 Looping N times
4.5 Loop examples iterating N times
4.6 While and for loops
4.7 Nested loops
4.8 Code: While loops
4.9 Code: For loops

5.1 Array concept (general)
5.2 Arrays
5.3 Array iteration drill
5.4 Iterating through arrays
5.5 Swapping two variables (general)
5.6 Code: Arrays

6. User-Defined Functions
6.1 User-defined function basics
6.2 Return
6.3 Reasons for defining functions
6.4 Functions with branches/loops
6.5 Code: Functions
6.6 Code: Functions with array parameters

7.1 Algorithms
7.2 Language survey
7.3 Libraries

8.1 Troubleshooting: Hypotheses and tests
8.2 Logic of troubleshooting
8.3 Creating hypotheses
8.4 Ex: Dog whimpering
8.5 Troubleshooting game
8.6 Knowledge
8.7 Ex: iPhone headset
8.8 Ex: USB car charger
8.9 Ex: Gmail username
8.10 Hierarchical hypotheses

9.1 Basic debugging
9.2 Ex: Calculation error
9.3 Ex: Logic error
9.4 Ex: Loop error
9.5 Ex: Function error
9.6 Programming knowledge

10.1 Introduction to algorithms
10.2 Algorithm efficiency
10.3 Searching and algorithms
10.4 Binary search
10.5 Sorting: Introduction
10.6 Heuristics

Introduce essential programming concepts to students with little or no coding experience

Fundamental Programming Concepts in Coral teaches the key principles of programming using Coral, a language developed by zyBooks specifically to instruct students with no coding background.

  • Simplified syntax makes it easy to read and write code, helping beginners avoid common programming pitfalls
  • Highly visual, relying on flowcharting-to-code snippets, giving students insights at each stage of the coding process
  • Covers basic programming concepts, including variables, data types, assignment statements, arithmetic operations, decisions, loops, arrays, and functions
  • Auto-graded test banks, over 30 labs, and a web-native simulator all integrated into the zyBook

What is Coral?

Coral is a programming language exclusive to zyBooks that is designed to be easy for beginners to learn and use. It features a simplified syntax that focuses on the essentials of programming, making it ideal for introductory courses.

Key features:

  • Simplicity Coral only has constructs needed for basic programming concepts, and each construct is simple
  • Code/flowchart unity Instructors can start with flowcharts that lead to code, or with start with code and visualize with flowcharts
  • Visualizing simulator Built-in, web-based Coral simulator shows step-by-step execution, variable values, inputs being consumed, and outputs; students just program and execute
  • Flowchart layout The simulator generates a flowchart from code, with the flowchart’s top-down and indentation layout matching the code, so learners can visualize code execution via flowcharts

Learn more about Coral

What is a zyBook?

Fundamental Programming Concepts in Coral is a web-native, interactive zyBook that helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)

Since 2012, over 1,700 academic institutions have adopted digital zyBooks to transform their STEM education.

“The most striking aspect of zyBooks for me as an instructor has been the ability to introduce a topic and then point my students to specific exercises/activities in zyBooks that would not only expound on the concept but allow them to practice them with confidence.”


Roman Lysecky
Professor of Electrical and Computer Engineering, Univ. of Arizona

Frank Vahid
Professor of Computer Science and Engineering, Univ. of California, Riverside