Object-oriented programming distinguishes between instance attributes and methods and class attributes and methods, annotated by the static modifier. Novices encounter difficulty understanding the means and implications of static attributes and methods. The paper has two outcomes: (a) a detailed classification of aspects of understanding static, and (b) a collection of questions designed to serve as a learning/practice/diagnostic tool to address those aspects. Providing answers requires learners to apply higher-order cognitive skills and, hence, to advance their understanding of the essential meaning of the concept. Each question is analyzed according to three characteristics: (a) the static aspects that the question examines according to a detailed classification the paper provides; (b) identification of the question according: to Bloom’s revised taxonomy, to the Structure of Observed Learning Outcome (SOLO) taxonomy; and to the problem-solving keywords used in the question's formulation. Several recommendations for teaching are presented.
Teaching object-oriented programming (OOP) is related to many difficulties. There is no single view on their causes among the university teachers. The results of applying various methods of teaching - with early or late introduction of the objects, are controversial too.
This work presents the results of a study designed to analyze and classify the difficulties encountered in the teaching of OOP in Bulgarian universities as well as the possibilities for dealing with them. Two viewpoints have been considered - of lecturers and of students. The issues under consideration are: when and what should be studied, what should be stressed, what languages and environments should be used, what examples are the most suitable, and what educational goals the programming courses should achieve.
Our investigation was aimed also to confirm or cast aside our suppositions that important aspects in teaching/learning OOP are being underestimated: great attention is being paid to the data in a class at the expence of the behavior of the objects in a program; more than necessary is being stressed onto the syntactic peculiarities in defining classes and objects without detailed clarification why they are needed; the auxiliary didactic tools that are being used are insufficient.