This paper presents the results from a phenomenographic study of first year university students' understandings of the concepts object and class. The students had just finished their first programming course using Java as the programming language. The analyses of the study display qualitatively different ways to understand the concepts. These aspects of the understandings are formulated as categories of description. Each aspect is important and relevant when solving a programming task, and a good understanding includes all aspects of the concepts. The categories show understandings of different complexity. There are students who can only express an understanding of the concepts as code and syntax rules. Other students can also express the role the objects play for the programmer and the performance of the task given, and classes as abstract data types. The students who express the richest understanding includes the understandings already mentioned, but they can also express that classes and objects depicts the real world.
Learning to understand a phenomenon means, in a phenomenographic perspective, to discern new aspects of that phenomenon. This discernment is only possible if there is a variation in a dimension that corresponds to the aspect, critical for the specific understanding. The question of variation gives interesting implications for teaching discussed in the paper. The discernment requires the students to have a mindful kind of learning, reflective learning. This implies for the teachers that explicitness in the teaching is of great importance. Explicitness in the teaching is defined at several levels, not only that the different aspects of the understandings found in the study should explicitly be mentioned, but also explicitness in the explanation and variation of these aspects.
The importance of offering a broad context for object oriented programming is also emphasized. This can include explaining not only the object oriented paradigm, but also to discuss some other programming paradigms, and the historical background that lead to these paradigms. It can also include giving the students the opportunity to follow a whole programming task with analysis of the problem, and to design, implement and test the program even at an early stage of their education.
The paper also includes some examples how the results from the study can be implemented in the teaching to help the students in their learning process.
Available as PDF (271 kB, no cover)
Download BibTeX entry.