Why I Wrote This Book
When I first learned to program, I found the process of testing and debug-
ging very frustrating. I can remember slamming my fist down on the hard
metal shell of the Selectric typewriters we used to interact with the time-
sharing system at the amazing speed of 15 characters per second. The bugs
didn't disappear any more quickly for the beating. None of my professors
taught me anything about testing and debugging that I can remember.
During the nearly 30 years that I have worked in software development,
many aspects of the profession have changed. Languages have become pop-
ular and gone out of favor. Better development methodologies have been
introduced, only to be replaced by yet more sophisticated methodologies.
Microprocessors have become ubiquitous, and software has become the
driving force behind many new products. The laptop computer that I wrote
this book on has a faster processor, more memory, and more disk space than
the multimillion dollar IBM
mainframe on which I learned to program.
Some things have not changed, however. Software products still contain
far too many bugs. Software developers still spend far too much time find-
ing and fixing those bugs. People who are learning to program spend far too
much time struggling to learn by trial and error.
I wrote this book because I wanted to introduce a systematic approach to
debugging to a wide audience. If you learn something from this book that
enables you to find and fix bugs more quickly, then I will have succeeded.
Who Should Read This Book
This book was written with both students and professional programmers in
mind. Any student who has completed a course in computer programming