The purposes of this course are:

To prepare an object-oriented design of small/medium scale problems and to learn C++ and Qt. 
To demonstrate the differences between traditional imperative design and object-oriented design.
To explain class structures as fundamental, modular building blocks.
To understand the role of inheritance, polymorphism, dynamic binding and generic structures in building reusable code.
To explain and to use defensive programming strategies, employing formal assertions and exception handling.
To write small/medium scale C++ programs using Qt.
To use classes written by other programmers when constructing their systems.