The general objective of this discipline is to present the concepts necessary to help students prepare an object-oriented design of small/medium scale problems and to learn C++ and Qt.

We aim to:

demonstrate the differences between traditional imperative design and object-oriented design;

explain class structures as fundamental, modular building blocks;

understand the role of inheritance, polymorphism, dynamic binding and generic structures in building reusable code;

explain and to use defensive programming strategies, employing formal assertions and exception handling;

write small/medium scale C++ programs using Qt;

use classes written by other programmers when constructing our systems.