OBJECT ORIENTED PROGRAMMING
cod. 1009653

Academic year 2024/25
1° year of course - Second semester
Professor
Luca VELTRI
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
72 hours
of face-to-face activities
9 credits
hub: PARMA
course unit
in ITALIAN

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)

Prerequisites

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

Bibliography

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

- - -

2030 agenda goals for sustainable development

- - -

Contacts

Toll-free number

800 904 084

Student registry office

E. segreteria.ingarc@unipr.it

Quality assurance office

Education manager:
Elena Roncai
T. +39 0521 903663
Office E. dia.didattica@unipr.it
Manager E. elena.roncai@unipr.it

 

President of the degree course

Gianluigi Ferrari
E. gianluigi.ferrari@unipr.it

Faculty advisor

Giovanna Sozzi
E. giovanna.sozzi@unipr.it

Career guidance delegate

Guido Matrella
E. guido.matrella@unipr.it

Tutor professor

Boni Andrea
E. andrea.boni@unipr.it
Caselli Stefano
E. stefano.caselli@unipr.it
Cucinotta Annamaria
E. annamaria.cucinotta@unipr.it
Nicola Delmonte
E. nicola.delmonte@unipr.it
Mucci Domenico
E. domenico.mucci@unipr.it
Saracco Alberto
E. alberto.saracco@unipr.it
Ugolini Alessandro
E. alessandro.ugolini@unipr.it
Vannucci Armando
E. armando.vannucci@unipr.it

Erasmus delegates

Paolo Cova
E. paolo.cova@unipr.it
Corrado Guarino
E. corrado.guarinolobianco@unipr.it
Walter Belardi
E. walter.belardi@unipr.it

Quality assurance manager

Massimo Bertozzi
E. massimo.bertozzi@unipr.it

Tutor students

SPAGGIARI Davide E. davide.spaggiari@unipr.it
MUSETTI Alex E. alex.musetti@unipr.it
BERNUZZI Vittorio E. vittorio.bernuzzi1@studenti.unipr.it
NKEMBI Armel Asongu E. armelasongu.nkembi@unipr.it
BASSANI Marco E. marco.bassani@unipr.it
ZANIBONI Thomas E. thomas.zaniboni@unipr.it
BOCCACCINI Riccardo E. riccardo.boccaccini@unipr.it
MORINI Marco E. marco.morini@unipr.it
SHOZIB Md Sazzadul Islam E. mdsazzadulislam.shozib@studenti.unipr.it