• No results found

The Process of Learning to Program

2.2 Requirements for Meaningful Learning

Learning can occur as two kinds of learning, superficial or in-depth1. Superficial learning is characterised by novice programmers memorising concepts of programming for automatic future use. In-depth learning, on the other hand, requires the comprehension of the effects of programming concepts so that the concepts can be applied in the future implementation of novel solutions. Programming often requires the application of existing knowledge to new situations, so it is important that the novice programmer understands programming at an in-depth level of learning, rather than superficially.

1

(Mayer 1981; Lockard 1986; Kushan 1994; Studer et al. 1995; Wiedenbeck 1999; Dingle & Zander 2001; McCracken et al. 2001; Jenkins 2002)

Meaningful learning, or in-depth learning, is the process by which a learner augments existing knowledge in long-term memory with new knowledge in short-term memory by forming connections (Bransford 1979). The existing, long-term knowledge, known as a schema, is extended in a process known as assimilation. Short-term memory is a temporary, limited capacity workspace for containing and manipulating information under attention. Long-term memory, or schema, is an organised information store, considered to be of unlimited capacity, which retains knowledge over a long period of time without conscious effort. According to Miller (1956), long-term memory for programming consists of syntactic and semantic knowledge.

Learning to program is highly technical information and in order for meaningful learning to occur, the following steps need to happen (Mayer 1981):

1) Reception: Incoming information enters the human cognitive system (indicated by the arrow labelled (a) in Figure 2.2). For this information to enter short-term memory, the learner needs to pay attention to it.

2) Availability: In order for the assimilation of the incoming information to occur, the learner must have appropriate prerequisite concepts in long-term memory (indicated by the box (b) in Figure 2.2).

3) Activation: The final step required for meaningful learning to occur involves the learner actively using the prerequisite concepts from long-term memory so that the new information can be connected to it and assimilated (indicated by the arrow labelled (c) in Figure 2.2).

Short Term Memory

Long Term Memory (b)

Stimulus Respon

(a)

(c)

se

Figure 2.2: Framework for Meaningful Learning

If any of the steps above are omitted, then meaningful learning will not occur. If such a case occurs, then the learner will be forced to learn each piece of new information as a separate piece of information by rote learning (superficial learning). While in-depth

learning and superficial learning both allow new information to be stored in long-term memory, when a learner is required to transfer information to a new situation, information learned using superficial learning can not be transferred (Mayer 1981). Instead, each new situation is treated as totally unrelated and requires a new learning process.

Short-term memory has a very limited capacity and is able to retain seven plus or minus two items of information at a time (Miller 1956). This phenomenon is known as the memorisation problem. The memorisation problem implies that any information that cannot be contained in short-term memory is discarded, often without the person being aware of the loss. In other words, if unnecessary information items occupy too much short-term memory then it is less likely that a successful transfer of the desired information items to long-term memory will occur via in-depth learning. For example, if the syntax of the programming language requires active concentration while the novice programmer is attempting to learn an algorithm, then the syntax will occupy a number of information item slots in short-term memory. This will leave less information item slots available in short-term memory for the algorithm to occupy, thereby increasing the chance that the algorithm will not be correctly assimilated into long-term memory via in-depth learning. This would result in the novice programmer being able to reproduce the algorithm, but not being able to apply it to new situations. It is possible to expand the capability of short-term memory using a process known as chunking. During chunking, a number of pieces of information are conceptually connected to form a unique item, occupying a single information slot in memory. Novice programmers are not able to create large chunks of information, but as they gain experience, larger chunks are formed from frequently observed patterns known as beacons (Curtis 1982). Programmer ability is indicated by the nature of the concepts in a chunk. For example, a novice programmer may only be able to identify beacons consisting of a couple of statements, such as “swap two variables” or “initialise variable”, while an expert may be able to identify much larger beacons such as “sort students in ascending order of class mark”.

Therefore, for in-depth learning to take place while learning to program, it is important to minimise the cognitive load placed on the novice programmer by

information not directly related to the current information to be learnt. In-depth learning can only occur under certain conditions, but even so, there is another factor, motivation, that plays a large role in the overall success or failure of a novice programmer in an introductory programming course.

Even should all the necessary requirements be in place for in-depth learning to occur, it is still not guaranteed that an individual will be successful in learning to program. An individual’s motivation can have a large influence on learning to program and the next section discusses this in more detail.

2.3 Motivation

Motivation is very personal and the exact sources thereof differ from person to person. There are a number of well-documented sources of motivation for individuals (Jenkins 2001b), as shown in Table 2.1.

Source Description

Extrinsic External influences, such as expected future reward. For example financial gain from employment.

Intrinsic Individual is a source of motivation to self. For example, finding a subject interesting.

Social Desire to please a third party, such as family, friends, sponsors or educators.

Achievement Desire to perform academically, even out-performing peers.

Null No clear motivating factors. For example, students who “fell” into a particular academic programme for no particular reason.

Table 2.1: Sources of Motivation

Of the sources of motivation mentioned in Table 2.1, the most influential is intrinsic motivation. If novice programmers are unmotivated, the chances of them succeeding in a course that is notorious for being difficult is greatly reduced (Ladd & Harcourt 2005). The extent to which motivation can be observed has been defined as (Biggs 1999; Jenkins 2001b):

Motivation = Expectancy × Value

Expectancy is the measure of how much the novice programmer expects to be able to succeed in their studies, while value is a measure of how much value, or worth, is

placed on the successful achievement of their studies. This is closely linked to the sources of motivation mentioned in Table 2.1, as both expectancy and value can be affected by different sources of motivation. If either expectancy or value drops to zero, then the novice programmer will not be motivated to succeed at all and will not engage in the educational environment.

The aim then, is to increase or maintain the expectancy to succeed and/or the value that students place on programming during the process of learning to program. Value is determined largely by external factors, such as expected future financial gain, achieving high marks, pleasing parents, and will not be discussed further. Students, however, must expect to be able to succeed in learning to program (Jenkins 2001b). The expectancy to succeed in an introductory programming course is affected by a number of different factors, one of which is perceived self-efficacy (Woszczynski & Guthrie 2003; Wiedenbeck 2005). Perceived self-efficacy is an estimation of ones' ability to successfully perform target behaviours. Individuals who judge themselves capable of performing certain tasks are found to attempt and successfully execute them (Byrne & Lyons 2001). A novice programmer’s self-efficacy beliefs come from four sources (Wiedenbeck 2005):

• personal experiences of task mastery;

• second-hand experiences, such as observing a peer performing a task; • verbal persuasion; and

• emotional arousal, consisting of monitoring of fatigue, stress and anxiety levels to assess self-efficacy.

The most influential source of self-efficacy is that of personal experience. In other words, the successful or unsuccessful mastery of tasks is the most direct and powerful factor influencing a novice programmer’s self-efficacy and hence their overall motivation. If novice programmers are unable to master tasks, such as getting a program to compile, these will have an impact on motivation levels and academic achievement (Gist et al. 1989; Horn et al. 1993).

In the early stages of skill development, efficacy beliefs have been shown to be malleable. This implies that during the beginning stages of learning to program (or any other skill), it is possible to affect self-efficacy beliefs positively or negatively. While a single failure to master a task will not affect self-efficacy negatively, fewer

failures are required to have a negative impact on self-efficacy than at later stages of learning to program. Conversely, fewer successes are required to bolster self-efficacy in the initial stages of learning to program than at latter stages. Intellectual ability and domain knowledge are major factors affecting academic achievement, but for individuals with the same levels of cognitive skill development, those with stronger self-efficacy beliefs perform better (Zimmerman 1995).

The previous two sections have discussed what should be in place for in-depth learning to occur and how motivation can affect the learning process, especially in the beginning phases. The following section examines the process of learning to program, with particular interest to comprehension, the programming language and the PDE used.