Table of Contents

1.1 Troubleshooting: Hypotheses and tests
1.2 Logic of troubleshooting
1.3 Creating hypotheses
1.4 Ex: Dog whimpering
1.5 Troubleshooting game
1.6 Knowledge
1.7 Ex: iPhone headset
1.8 Ex: USB car charger
1.9 Ex: Gmail username
1.10 Hierarchical hypotheses

2.1 Basic debugging
2.2 Ex: Calculation error
2.3 Ex: Logic error
2.4 Ex: Loop error
2.5 Ex: Function error
2.6 Programming knowledge
2.7 Survey


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

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

What You’ll Find In This zyBook:

More action with less text.

  • ~750 participation activities: Questions, animations, tools
  • Exceptionally visual presentations: Animations of normally hard DM concepts
  • Seamlessly integrated auto-generated and auto-graded challenge activities
  • Includes hundreds of end-of-section exercises

Instructors: Interested in evaluating this zyBook for your class? Sign up for a Free Trial and check out the first chapter of any zyBook today!

The zyBooks Approach

Less text doesn’t mean less learning.

Nearly every instructor who teaches programming notices that students have weak debugging skills. Faced with a failing program, many students make random changes and hope things improve. Or they shrug their shoulders, say “I have no idea what’s wrong”, and ask the teacher for help. Most textbooks and websites provide insufficient coverage of debugging.

This two-chapter free zyBook teaches a systematic process for troubleshooting and helps new programmers to cultivate a solid foundation for debugging. The basic process illustrates how to create a hypothesis, test the hypothesis, and repeat. Seemingly obvious, but it’s not to most students.

The material teaches the process using everyday systems first, like TVs and smartphones. With a solid foundation of the basic systematic process, the material then teaches basic debugging (using a generic programming language).

The material then teaches debugging using the Coral programming language, an ultra-simple pseudocode-like language for new programmers. The examples appear in the web-based Coral simulator, so students can run the program, observe the error behavior, and fix the bugs. The Coral simulator is available for free for instructors and students.