Why is learning to program so difficult? One difficulty is that learning to program needs the acquisition of a multitude of inter-related skills. Jenkins (2002) argues that programming is a complicated task, which requires the mastery of a number of skills such as problem solving, abstraction, mathematical logic and testing, debugging and so forth. A novice programmer simply lacks these skills. More importantly, success in learning to program demands knowledge of computer itself. Ben-Ari (1998) points out that students lack a viable mental model to learn programming. On the other hand, undue emphasis is placed on the learning of programming syntax (Deek, 1999). In this article, we will focus on approaches of teaching computer programing. Winslow (1996) introduced the term “programming pedagogy” in his paper. Although programming pedagogy is not explicitly defined in the paper, the term here refers to any instructional methods and strategies which are used to teach students introductory programming. Due to these reasons, programming pedagogy calls for special attention.
Approaches Of Teaching Programming
We identified seven pedagogical approaches of teaching computer programming arising from the review of appropriate literature. The following sections provide a brief description of each of these approaches.
Structured Programming Approach
In the 1970s, one catchword in programming is structured programming. It is an approach, which intends to “support the production of correct, understandable programs which are easy to modify and maintain” (Freiburghouse & Liskov, 1973). The approach allows control structures of sequence, selection, and repetition only. The GOTO statement is considered detrimental to structured programming (Dijkstra, 1968). To facilitate the development of a structured program, a top-down design, which decomposes a large program into a manageable smaller program, is used. Programs are improved successively through stepwise refinement. In this manner, it is hoped that quality program can be produced. Although it was advocated in the 1970s, it is still one of the prevalent programming approaches today.
Key Terms in this Chapter
Problem Solving: To solve, problem is to find a way where no way is known off-hand, to find a way out of a difficulty, to find a way around an obstacle, to attain a desired end that is not immediately attainable by appropriate means. The emphasis of problem solving in programming instruction focuses on the expression of solutions in terms of mathematical functions.
Novice Programmer: A computer programmer who is not experienced at programming.
Textual Programming: The representation of programming processes is based on written texts.
Programming Pedagogy: The study and theory of the methods and principles of teaching and learning computer programming. It refers to any instructional methods and strategies which are used to teach students introductory programming.
Computer Programming: Mainly consists of designing the underlying algorithm and representing that algorithm as a program.
Curriculum: Consists of four interacting components, namely, teaching objective, teaching material, teaching method, and assessment.
Visual programming: The representation of programming processes is based on graphics and images. It allows the manipulation of visual information and provides support for visual interaction.