problem formulation for programmers
The various attempts to augment man's information processing capabilities with the use of machines became significantly more realistic with the advent of the modern electronic and adaptive-logic computers 4 . With the introduction of advanced computing capabilities, a host of new and serious challenges emerged. One of the main challenges is that of transforming an ill-stated problem to one acceptable by the computer. Once a problem is well-stated, communication becomes relatively simple 3 . The burden is on the programmer to be the interface between the world of ill-stated problems and the computers. The programmer has to select a methodology by which he can take an ill-stated problem and restate it in such a way that it can be developed into a set of procedures and expressed in a language that is acceptable and understood by the machine. In order to more fully utilize computers for problem solving it is necessary that we understand more completely how we formulate a problem solution. Probes into the problem formulation question have been of two types, symptomatic and methodilogical. The symptomatic approach focuses on the program structuring capabilities provided by programming languages. It is believed that programming languages having certain program structuring features permit a more comprehensible organization of the problem solution and relate positively to successful programming. The second approach, which is being proposed here, is to examine problem solving methodologies used in computer programming. Our specific objectives are (1) to examine the possibility that a recognizable set of problem solving strategies maybe observed in a programming task, (2) given such strategies, the relationship these have to success levels in programming performance. In other words, how does programming performance vary as a function of the structuring of the problem by the programmer.
program programmer informal process capabilities use computation challenge communication interfaces select methodology procedure language order probe types structure programming language feature organization computer programming object strategies task relationships performance functional adapt logic