C++ is the most commonly used language in introductory and intermediate programming courses in Bulgarian universities. In recent years this language has developed greatly. Its abstractions are more flexible and affordable than ever before. Such great number of changes are related to the launch of the new standard (known as C++11) that we have grounds to consider it even a new language. It is inevitable to reflect all these changes in training courses and this prompted us to consider not only some updating of academic curricula but also a comprehensive reorganization of our programming courses. So, in this article we share our successes and difficulties in this direction.
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.