Content area
Full text
Sometimes, if you do not begin at the end, you end at the beginning. This problem-solving phenomenon, in the realm of computer science (CS), is the subject of this paper. Beginning at the end yields a "working backwards" approach, opposite to that of "working forwards." One might expect 3rd year CS students to be aware of and effectively utilize both approaches. In particular, one might expect that students would work recursively backwards when it is the suitable way for solving a given algorithmic problem. The study in this paper reveals that this is not quite the case. The study shows that a large number of students work solely forwards and obtain erroneous or inefficient results, without considering any redirection of their train of thought. These students' working patterns are characterized and discussed. Suggestions for enabling their awareness and changing the direction of their reasoning are shown and advocated.
Working forwards is the heuristic (way) of approaching a problem by starting from the initial state and advancing forwards, towards the goal state. Working backwards is the heuristic of advancing backwards from the goal state (Polya, 1957). In computer science, the former is a common approach for devising algorithmic problem solutions by incremental, inductive progress, and the latter encapsulates the fundamental notion of recursion.
Algorithmic problems may often be approached in more than one way (Soloway, Spohrer, & Littman, 1989; Linn & Clancy, 1992). Yet, there are problems for which some approaches are more suitable than others. For example, the shortest-path problem in graphs is naturally solved by working forwards, using BFS (Breadth First Search); whereas topological-sort is solved by working backwards, using DFS (Depth First Search). In many optimization and counting tasks, the primary way to gain insight is by reasoning recursively, backwards (Cormen, Leiserson, & Rivest, 1990).
In teaching our students algorithm/program design we would like them to properly invoke and follow suitable solution approaches. In particular, we would like them to invoke a recursive, "working backwards" approach, when it is the suitable way, because recursion is a fundamental problemsolving means in computer science. Do they work backwards when it is the suitable way? The study presented is this paper addresses this question.
Working backwards may require reversing the reasoning direction, .from progressing...





