In the two decades prior to the writing of this book, numerous texts have been written to assist mathematics students in learning to do proofs. Many of them followed earlier texts in embedding short discussions of proof techniques in larger presentations on sets, functions, counting, and the like. These were aimed at the traditional course for mathematics majors who were moving from the calculus to upper division courses.
A few books, however, concentrated entirely on the methods of proof, without additional content. These books were suitable for use by high school students. In some cases they demonstrated the arguments of Schoenfeld, and in others they applied his results.
Antonella Cupillari published the first edition of The Nuts and Bolts of Proofs in 1989 and released a much enlarged second edition in 2001 [Cu01]. The work covers the following proof techniques:
Direct proof
Proof by contrapositive
Equivalence theorems
Use of counterexamples
Mathematical induction
Existence theorems
Equality of sets
Equality of numbers
The most innovative aspect of this work is the acknowledgment that students need a control structure to help them select the appropriate proof technique for a given problem. This structure is provided as a flowchart on the last page of the book. The flowchart has three binary decisions, one five-way decision, and eight possible procedures to execute based on the results of these decisions.
Unfortunately, in the second edition, this flowchart was photo reduced from the two-page version in the first edition, rendering it quite difficult to read. The concept, however, is still a good one. The significance of this work for debugging is that presentation of proof techniques has moved beyond a simple list of questions to a process of matching techniques to problems.
John Mason, with Leone Burton and Kaye Stacey, published the first edition of Thinking Mathematically in 1982, with a revised edition in 1985 [MBS85]. It differs from other works in that it tries to teach mathematical thinking in general, without addressing specific proof techniques.
This work divides the process of problem solving into three phases: entry, attack, and review. During each of these phases it encourages in the strongest terms that the problem solver keep a record of at least three things:
The significant ideas that occur
The goals you’re trying to achieve
The feelings you experience as you work
The book provides much explanation and many opportunities to employ what it promotes as four fundamental processes of mathematical thinking: specializing, generalizing, conjecturing, and justifying. While formal proof methods aren’t taught, the material on justifying provides an intellectual foundation for using them.
There are several innovative aspects of this work. First, it addresses the emotions that people feel when they solve mathematical problems. It may be the first serious preventative to the “mathophobia” that so many students develop by the time they reach high school. In this respect, it applies some of the ideas that Schoenfeld developed on mathematical belief systems.
Second, it encourages the use of a log or set of discovery notes throughout the problem-solving process. Not only does it suggest that you write this information down, but it also tells how you can employ it during the process.
Third, it devotes an entire chapter to “Developing an Internal Monitor.” In this respect, it applies some of the ideas Schoenfeld developed on the need for a control mechanism during problem solving. The internal monitor keeps the student on track, identifies when the student has become stuck, suggests alternatives when needed, and evaluates ideas for further consideration.
There are two reasons that this work is significant for debugging. First, it applies and extends Schoenfeld’s ideas about belief systems and the need for control mechanisms. Second, it promotes the use of discovery diaries as a means for teaching and using problem-solving skills.
Daniel Solow published the first edition of How to Read and Do Proofs in 1982, delivered an enlarged second edition in 1990, and updated a third edition in 2002 [So02]. The work covers the following proof techniques:
The forward-backward method
The construction method
The choose method
Induction
Specialization
Nested quantifiers
The contradiction method
The contrapositive method
The direct uniqueness method
The indirect uniqueness method
Proof by elimination
Proof by cases
Max/min methods
There are two innovative aspects of this work that go beyond the traditional approaches and litanies of heuristics. The first is the level of detail that the author provides in describing how to employ the method. To put these in perspective, his text summaries of how to use each method are all over 150 words long, and some are twice that length.
The second innovative aspect of this work is to provide a table that summarizes the thirteen methods described in the book. For each method, columns describe the name of the technique, the conditions under which it should be used, what should be assumed, what should be concluded, and how to employ the method.
The advantages of this work are twofold. First, it no longer makes the assumption that students will learn the steps of proof by osmosis if they’re exposed to a sufficient quantify of those proofs. The level of detail in the method description makes explicit what other texts assume. Second, the summary table goes beyond Cupillari’s flowchart by listing not only the usage conditions and names of methods, but also assumptions, conclusions, and a concise summary of how to apply the method.
The significance of this work for debugging is recognizing that some students won’t learn procedures from practice alone, without those procedures being described explicitly. Students of computer programming have been held back by the same lack of explicit description of debugging procedures.