A long-term investigation of the comprehension of OOP concepts by novicesNoa RagonisMordechai Ben-Ari
Noa Ragonis
Mordechai Ben-Ari
2005
Computer Science Education, Volume 15, Issue 3
This article describes research on the learning of object-oriented programming (OOP) by novices. During two academic years, we taught OOP to high school students, using Java and BlueJ. Our approach to teaching featured: objects-first, teaching composed classes relatively early, deferring the teaching of main methods, and focusing on class structure before algorithms. The research used a constructivist qualitative research methodology using observations and field notes, audio and video recordings, and an analysis of artifacts such as homework assignments. The findings were divided into four primary categories: class vs. object, instantiation and constructors, simple vs. composed classes, and program flow. In total, 58 conceptions and difficulties were identified. Nevertheless, at the end of the courses, the students understood the basic principles of OOP. The two main contributions of this research are: (i) the breadth and depth of its investigation into the concepts held by novices studying OOP, and (ii) the nature of the constructivist qualitative research methodology.
Study InformationManually extracted from the paper by the Progmiscon.org team
Programming Languages
Java
Method
Qualitative study (observations and field notes, audio and video recordings, and collection of artifacts)
Subjects
47 grade 10 students
Phenomena Studied
Misconceptions/Difficulties
Misconceptions and difficulties related to OOP in JavaArtifact
We are not aware of an artifact supporting this paper.Related MisconceptionsReferenced by 6 Misconceptions
AddMemberAtRuntime — Java
Set of class members can change at runtimeConstructorAllocates — Java
The constructor allocates the objectConstructorReturnsObject — Java
Constructors need to return objectsMustInitializeFieldInConstructor — Java
Constructors must assign values to all fieldsNoEmptyConstructor — Java
A constructor must do somethingNoEmptyInit — Python
__init__ must do something