Дисциплината дава основни знания и умения за добрите принципи и практики при обектно-ориентираното програмиране. Разглеждат се понятията: класове, капсулация, шаблонни класове, наследяване, абстрактни класове и интерфейси, полиморфизъм, управление на изключенията, изолзване на базови шаблони за дизайн.