The modern Mathematical Heuristics movement began with the publication of How to Solve It by George Polya in 1945. Polya’s “How to Solve It” list consists of four phases: understanding the problem, developing a plan for a solution, executing the plan, and reviewing the results. While Polya’s ideas on heuristics have been expanded upon and widely employed in teaching mathematics, they don’t seem to have caused a meaningful change in student performance.
There have been numerous texts written to assist mathematics students in learning to do proofs. Cupillari’s The Nuts and Bolts of Proofs is an advance over previous works because it provides students a control structure to help them select the appropriate proof technique for a given problem. Mason’s Thinking Mathematically is an advance over previous works because it addresses the belief systems of students and provides a method for learning how to become self-aware during problem solving. Solow’s How to Read and Do Proofs is an advance over previous works because it provides a greater level of detail describing how to employ each proof method and because it provides a tabular summary and comparison of the methods described in the book.
Schoenfeld defines a hierarchy of four elements of “knowledge and behavior necessary for an adequate characterization of mathematical problem-solving performance.” These are resources, heuristics, control, and belief systems.
Schoenfeld’s research shows that in mathematics, expert problem solvers are quickly able to match stereotypical problem situations to stereotypical responses, which he terms resources. He believes that the heuristics used in mathematics education are actually names for families of closely related heuristics. He defines control in terms of evaluating lines of inquiry and allocating resources, particularly time.
We believe that Schoenfeld’s categories can be transferred from the domain of mathematical problem solving to that of software debugging in a straightforward manner. We suggest that there are three levels of activities in debugging: strategies, heuristics, and tactics.
One way to look at these three levels is a military analogy. Military analysts look at three levels of activity: strategic, operational, and tactical.
Another way to look at these three levels is with respect to hypothesis generation and evaluation. Strategies tell you which hypothesis to explore. Heuristics suggest new hypotheses or new tactics to employ. Tactics tell you about the state of the program when it’s running, so that you can validate or invalidate the current hypothesis.