Abstract:
The quest for a better way to learn and teach programming, in particular object-oriented programming, is a challenge that continues to intrigue computer science educators. Even after decades of research in learning to program, educators still search for the optimal instructional approach that will solve the `learning to program effectively' problem among introductory programming students.
The aim of this study was to gain insight into, and to suggest possible explanations for, the "qualitatively different ways" in which students experience learning to program using an object-oriented programming language, and to recommend teaching and learning strategies as a result of the outcomes of the research. In order to achieve these aims, a combination of phenomenographic research methods and elements of activity theory have been employed to gain an in depth understanding of pre- and in-service teachers' learning experiences. The categories of description for the phenomenon, learning to program and the influence of the learning context have been analysed and described in detail.
It is argued that understanding learning to program using Java, in order to teach programming involves more than understanding learning to program as it is normally taught in university programming courses. In addition to object-oriented concepts such as message passing, inheritance, polymorphism, delegation and overriding, it entails understanding how learning to program is reflected in the goals of instruction and in different instructional practices. Knowledge of learning to program must also be linked to knowledge of students' thinking, so that teachers have conceptions of typical trajectories of student learning, and can use this knowledge to recognize landmarks of understanding in individuals.
The findings suggest relationships among students' affective appraisals of the value of learning to program, their conceptions of learning to program, their approaches to learning it, their evaluations of their performance in tests and examinations and outcomes of their actions. The relationships emerged from student descriptions of their actions and the way in which different aspects of their learning and outcomes related to one another were qualitatively described and in some cases, quantified. In particular, the tensions between prior programming knowledge of a procedural language and current learning of an object-oriented language have emerged in the study. This has implications for teaching, as this study was set against the backdrop of the change in programming language in high schools, from a procedural to an object-oriented language.