cod. 1009653

Academic year 2022/23
1° year of course - Second semester
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ingegneria informatica
Type of training activity
72 hours
of face-to-face activities
9 credits
hub: PARMA
course unit

Learning objectives

The aim of the course is to provide students with skills concerning:
- Object-oriented programming (OOP), using C++ as reference programming language
- Generic programming in C++
- Main data structures and standard library in C++
- Design Pattern
- Graphical user interface programming
- Multithread programming
- References to other OOP langiages (Java e Python)


Basic knowledge of a programming language.

Course unit content

The course provides an introduction to object-oriented programming (OOP), using C++ as reference programming language.

Full programme

Lesson 1: OOP introduction, first example
Lesson 2: differences with C, passing parameters as reference
Lab 1: Command line compilation, parameter passing, struct SafeIntArray
Lesson 3: ADT, classes and objects, C++ classes, access levels, function and method overloading, operator overloading
Lesson 4: Operator overloading, constructors, constructor overloading, default constructor
Workshop 2: builders, overload
Lesson 5: constructors, initialization list, uniform initialization, delegated constructors, destructor, static members
Lesson 6: friends, nested classes, constancy
Workshop 3: friends, constancy, operators
Lesson 7: shallow copy and deep copy, examples
Lesson 8: string, iterator, auto, decltype, range-for
Lab 4: deep copying, fstream
Lesson 9: iterators, iostream, fstream; inheritance
Lesson 10: Inheritance types, constructors, destructors, UML
Lab 5: Inheritance
Lesson 11: late binding, virtual, override, final, abstract classes
Lesson 12: Type conversions, multiple inheritance
Lab 6: abstract classes
Lesson 13: Generic programming, template functions, template function specialization, template classes, template class specialization
Lesson 14: ADT, Based Concrete Data Type, Stack ADT, Array Based and Linked List Implementation, Queue ADT, Array Based Implementation
Lab 7: template classes
Lesson 15: Implementing queue based linked list, ADT list, ADT tree
Lab 8: template classes
Lesson 16: binary tree, browsing algorithms, set ADT, implementation, multiset ADT
Lesson 17: Map ADT, hashtable and tree implementation, multimap ADT
Lab 9: STL set and map
Lesson 18: STL, iterators, vector, list, deque, set, map, pair, array, namespace, exceptions
Lesson 19: resource management and smart pointers, functors and lambda expressions, GUI
Lab 10: exceptions, functions as parameters
Lesson 20: Smart pointers, function objects, lambda expressions
Lesson 21: compiling, program memory, assembly, function call, gdb
Lab 11: Smart pointers, function objects, lambda expressions
Lesson 22: introduction to the Java language; object oriented programming in Java
Lesson 23: introduction to the Python language
Lab 12: Programming in Python
Lesson 24: object oriented programming in Python


Marco Bertini, Programmazione Object-Oriented in C++. Società Editrice Esculapio.

Luis Joyanes Aguilar, Fondamenti di programmazione in C++. Algoritmi, strutture dati e oggetti, McGraw-Hill.

Teaching methods

Classroom lectures (40 hours).
Classroom exercises (8 hours).
Laboratory lectures (24 hours).

Assessment methods and criteria

The exam consists of a laboratory examination (3 hours) including exercises and quizzes.

Other information

- - -