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.

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.