The C++ programming language supports multiparadigm programming. We can write programs
in procedural, object-oriented, generic way at the same time. However, it is difficult
to figure out exercises for the terminal examinations since not easy to separate the
algorithmic cogitation from the knowledge of the programming language. There are some
basic elements that programmer students have to know: constructors, parameter passing,
objects, inheritance, standard library, handling constants, copying objects, functions
and member functions, etc. Exercises must be multiparadigm according to the C++ language.
Using only one paradigm in C++ is not enough. This results in that we have to distinguish
the different linguistic constructs on the basis of its complexity. Many questions
are arisen in connection with the exercises of terminal examinations. How can we gauge
the procedural, the object-oriented, and the generic paradigms at the same time? How
can we gauge students' C++ knowledge when we do not lay stress on the algorithmic
cogitation? What kind of exercises may be interesting by the Standard Template Library?
Which C++ constructs are reckoned to be more difficult and which ones considered to
be easier? What are the most important ones? In this paper we give answers to the
previous questions, we describe our methodology to assessment of students' C++ knowledge
in a semi-automatic grading way. We also present exercise examples that worked out
according to our methodology. We take stock of students' results in the paper.