0% found this document useful (0 votes)
62 views

Issues and Difficulties Computer Programing

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views

Issues and Difficulties Computer Programing

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Issues and Difficulties in Teaching Novice Computer

Programming
I.T. Chan Mow
National University of Samoa
PO Box 1622
Apia
Samoa

Abstract: The main argument promoted in this paper is A. Cognitive Requirements of Programming
that computer programming is a cognitively challenging The first area of difficulty in teaching programming relates
subject and hence good instructional strategies are to the cognitive requirements of learning programming.
important in providing the student with optimal learner Learning to program is a cognitively demanding task
support. This paper examines some of the major issues in ([9],[10],[11],[12]).
the instruction of computer programming as based on du
Boulay’s 1989 framework. For each area of difficulty, Table 1
some potential solutions are proposed. Solutions are Summary of the five main areas of difficulty in learning
categorized as pedagogical, technological or content programming
based. An attempt is then made to combine these Note: This categorization is based on du Boulay’s framework,
potential solutions and best practices as found in the 1989.
literature into a learning environment CABLE.
Area of Difficulty Dimensions/Aspects
Cognitive Cognitive demand (Mental models)
I INTRODUCTION
requirements of
Computer programming is a difficult and challenging programming
subject area which places a heavy cognitive load on students Precision
([1],[2]). After two years of learning programming, most Transition from novice to expert
novice programmers are still struggling to be proficient Syntax and Closeness of mapping
([3],[4]). From an examination of current research in this field, semantics
it can be postulated, that one reason computer programming Consistency
instruction seldom results in the successful transfer of problem Error proneness
solving skills lies in a lack of understanding about good Role expressiveness
instructional approaches in this direction ([5],[6],[7]). Hence, Secondary notation
effective instructional strategies and optimal learner support Hard mental operations
mechanisms should be developed to provide learners of Orientation
computer programming with the optimal learning environment
that they need. The following section outlines the issues and
difficulties in novice programming and the recommended Auxiliary skills
solutions to these. (Pragmatics)
Resource
II ISSUES AND DIFFICULTIES IN NOVICE PROGRAMMING constraints

The discussion on the nature and types of problems B. Cognitive Demand


encountered in learning programming is based on areas of Programming requires a programmer to hold a wide range
difficulty as identified by [8], but with some additional of information in working memory. These include: (a) the
concerns as identified by the author such as the issue of details of syntax and semantics specific to the programming
resources. These areas are: (a) the cognitive requirements of language used, (b) some mental model of how to solve the
programming; (b) syntax and semantics; (c) orientation; (d) problem, and (c) the ability to differentiate between solving
the auxiliary skills needed for programming; and (e) the problem and specifying the solution ([13],[14]).
resource constraints. It must be noted that these areas
represent overlapping domains. Table 1 presents a summary C. Mental models.
of these five main areas of difficulty in learning Programming involves the construction of several mental
programming. models ([15]). Firstly, computer programs are written as a
solution to some problem, and an understanding or mental
model of this problem domain needs to be established before

M. Iskander (ed.), Innovative Techniques in Instruction Technology, E-learning, E-assessment, and Education, 199–204.
© Springer Science+Business Media B.V. 2008
200 MOW

any attempt to write an appropriate program ([12]. Secondly, with the use of multiple examples, and also the use of a
the programmer needs to construct a mental model of the debugger to identify program errors.
“notional machine”. “The notional machine is an idealized
conceptual computer whose properties are implied by the G. Differences between Novices and Experts
constructs in the programming language employed” ([8]). The learning process can be viewed as a process in where
Thirdly, the programmer must also develop a mental model the learner progresses from a novice state to that of an expert.
of the program itself and how it will be executed ([11] [12]). An investigation of the differences between novices and
An effective instructional model should facilitate the experts yields important information on how to teach
building of effective mental models by strategies such as programming to novices or beginners.
good modeling, coaching and scaffolding by an expert, the Firstly, novices have difficulty in recognizing incorrect
use of modeling tools and visualization techniques. grammar, and hence struggle with syntactic knowledge while
Furthermore, multiple examples should be used to illustrate experts readily recognize grammatical errors [18]. Secondly, in
the behavior of programming models, so that students could terms of semantic knowledge, experts have effective mental
use the examples to construct their own viable mental models of the virtual or notional machine, while novices have
models ([15]). Constant repetition of examples illustrating a yet to build these models. Thirdly, in the area of schematic
concept is needed for the construction of viable mental knowledge (knowledge of the structure of a program) experts
models. Another effective strategy, as an aid to the use deep structure to categorize programs based on the type of
organization of knowledge, is the use of advanced routines required. In contrast, novices use superficial features
organizers. for categorization.
Programming is described as the composition of plans or
D. Cognitive load. schemas [4]. Novices are inclined to use low-level plans, and
Programming requires the student to be proficient in the use are unskilled at problem decomposition. In contrast, experts
of the development environment, mastering the use of the keep an overall view of the problem in mind, while
compiler, and interpreting responses such as result codes, error decomposing problems into small, manageable sub-problems.
and warning messages. The need to hold this wide range of Experts also consider many more alternative solutions than
information in working memory, imposes a demanding novices, and are more adept at comparing different solutions
cognitive load on the student ([16] [2]). Reference [2] proposes and considering the merits of each [18].
the use of instructional support materials such as worked
examples, and partially complete solutions (implemented in H.. Notation: Difficulties with Syntax and Semantics
part by a code restructuring tool) as strategies for alleviating The second area of difficulty in teaching programming is the
mental load. The use of visualization techniques will also notation for representation of a program. Notation refers to the
alleviate cognitive load. Examples include visual programming symbols of a programming language and the syntactic rules for
interfaces and visual debugging tools. combining them into a program [4]. Some of the dimensions or
aspects of notation which affect programming ability are
E. Psychological effects. discussed below. These include: (a) closeness of mapping; (b)
Learning to program is more difficult, complex and consistency; (c) error proneness; (d) role expressiveness; (e)
intimidating than simply using one [16]. Psychological factors secondary notation; and (f) hard mental operations. These will
which may affect student interaction with computers include: now be discussed in turn.
(a) unpleasant experiences with computers such as computer
breakdown and data losses; (b) intimidating computer jargon or I. Closeness of Mapping
vocabulary; and (c) continually encountering problems that one “Closeness of mapping” is a description of the closeness of
is unable to solve, or even comprehend, sometimes leading to a the programming language to knowledge which students
state of “learned helplessness”. already possess, to the types of problems students should solve,
and to the concepts students are attempting to acquire. A good
F. The Need for Precision instructional model would have techniques which would
Another factor which contributes to the difficulty in learning facilitate a closeness of mapping or a match between a
programming is precision [17]. A high level of precision and student’s existing knowledge, the problem which needs to be
specification must be maintained at all times, requiring a level solved and the entities in a program. Useful techniques include
of attention to detail that does not come naturally to human the teaching of only a subset of the language, and the gradual
beings. At the same time, the programmer must deal with the expansion to include the full language as the novice
limitations of language, machine, and compiler, all of which programmer gains expertise in the use of the language [19],
frequently require the inclusion of details that are not directly and the use of contextualized examples of programs in real
related to the problem, such as inclusion of libraries, and world or applied situations.
memory management routines.
An effective pedagogical model would emphasize the need J. Consistency
for precision by extensive modeling, coaching and scaffolding There are many forms of consistency, and programming
languages require several of these forms in order to be

You might also like