Figure 1415

A schematic diagram of Lamberts' (1990) hybrid system for modelling physics expertise.

has shown that the system, when trained, can produce solutions that closely correspond to those generated by human experts.

A number of theorists have suggested that connectionist models should form the basis of future accounts of expertise (see Holyoak, 1991; Lamberts & Pfeifer, 1992). Their argument rests on the claim that connectionist models easily capture adaptive expertise, rather than just routine expertise (see Hatano & Inagaki, 1986). A case in point is the type of adaptive expertise manifested in solving problems by analogy, which we encounter in the next chapter (see Holyoak & Thagard, 1989).

Computer programming skills

With developments in information technology many people, other than computer scientists, have had to learn to program computers. Three unassailable facts have emerged from this experience. First, people do not find programming languages easy to learn. Second, even expert programmers frequently make mistakes. Third, all of this takes time and costs money. From a research perspective, the interest lies in fundamental questions about the cognitive demands of computer programming; about the features of programming languages that make them difficult to learn and use (see e.g., Anderson, Boyle, & Reiser, 1985; Eisenstadt, Keane, & Rajan, 1992; Kahney, 1989; Kahney & Eisenstadt, 1982; Soloway & Spohrer, 1989).

Plans in programming

Like chess masters and expert physicists, the expert programmer appears to have developed elaborated schemata or abstract plans for programming tasks (Chapter 9). Soloway and his associates argue that expert programmers have script-like plans that are stereotypical chunks of code. For example, a programmer might have an "averaging plan", which contains the knowledge that an average is a sum divided by a count (see Rist, 1989, 1995; Spohrer, Soloway, & Pope, 1985). These plans are seen as being "natural" in the sense that programmers possess them before they learn to program. According to this view, programmers plan a program at an abstract level, by co-ordinating and sequencing these chunks to achieve the required task (see Erlich & Soloway, 1984).

Evidence for this theory has been found by Adelson (1981). She has shown, using a recall task, that expert programmers can recall more lines of code than novices and have a larger chunk size for encoding this information than novices (see also McKeithen, Reitman, Rueter, & Hirtle, 1981). Soloway and Erlich (1984) have supported the theory with evidence from a different fill-in-the-blanks task, in which subjects have to add missing statements to a program. Expert programmers have less difficulty in filling in the blanks than novices. Skilled programmers appear to be able to select appropriate plans from memory and adapt them to the local requirements of a specific programming task. Soloway, Bonar, and Erlich (1983) have found direct evidence for the existence of such programming plans when the requirements of the programming language conflict with programmers "natural" plans from everyday life. Programmers order program statements according to the dictates of everyday knowledge, even when this ordering leads to bugs in their programs. For example, the process/read loop construct in PASCAL is a major source of bugs because it mismatches the normal course of events in the real world; in the real world we get an object (read it), and then do something with it (process it), but in the PASCAL loop-world items are processed first and then read.

However, Gilmore and Green (1988) have argued against the view that programming plans are necessarily natural and general. They asked skilled programmers in two languages—PASCAL and BASIC— to carry out plan-related and plan-unrelated tasks, when the plan structure of a program was highlighted. They reasoned that if plans were being used, then highlighting the structure of these plans should facilitate subjects in a plan-related task, but not in a plan-unrelated task. This prediction was only confirmed for PASCAL programs. Gilmore and Green therefore proposed that the contents of programming plans do not generalise across languages (even though they admitted that BASIC programmers may use other plans). In particular, they maintained that plans emerge from notational aspects of the programming language in question. So, the notation of PASCAL makes it easier to form plans than the notation of BASIC (see Davies, 1990a). Interestingly, as an aside, it appears that when programmers learn a new language, the structure of plans in the first language is transferred to the second, irrespective of whether they are appropriate or not (Scholtz & Wiedenbeck, 1993).

Davies (1990a, b) has produced a synthesis to heal the conflict between these findings and earlier work. His position is that natural plans exist but they may be harder to express in one language than in another. Furthermore, programmers may find it easier to express natural plans in a particular language after being trained in program design. Davies pointed out that Gilmore and Green's results could be due to the PASCAL programmers' previous training in design. He therefore performed a similar study looking at novice BASIC programmers with or without design experience. In contrast to Gilmore and Green's results, he found that BASIC programmers could benefit from the cues to plan structures in programs, but only when they had training in program design. So, to characterise the knowledge involved in programming expertise we need to consider three distinct factors: the structures in the problem domain (i.e., natural plans), the structures in the particular programming language domain (to do with the notation of the language), and the mapping between the former and the latter (see Rist, 1995, for a computational model that simulates design in programming). Education in program design is seen as providing the basis for this mapping.

All the aforementioned studies have concentrated on the comprehension and recall of programs, rather than on the debugging and coding of programs. More recently, some studies have addressed codegeneration, showing that there are systematic changes in the strategies used by programmers as they move from being novices to experts (see Davies, 1991; Green, 1989,1990; Rist, 1989, 1995). There is also some work on debugging which shows that it can be usefully understood as a form of situated action, involving little planning (Law, 1998). As such, it is clear that there are significant differences between the different tasks carried out when people do what is generally called programming. Theories of programming expertise now take into account the many ingredients that go into making up the skill; the programming language used, the background education of the programmer, the knowledge structures acquired, and the strategies employed to write the code.

Business Correspondence

Business Correspondence

24 chapters on preparing to write the letter and finding the proper viewpoint how to open the letter, present the proposition convincingly, make an effective close how to acquire a forceful style and inject originality how to adapt selling appeal to different prospects and get orders by letter proved principles and practical schemes illustrated by extracts from 217 actual letter.

Get My Free Ebook

Post a comment