Select Academic Year:     2016/2017 2017/2018 2018/2019 2019/2020 2020/2021 2021/2022
Second Semester 
Teaching style
Lingua Insegnamento

Informazioni aggiuntive

Course Curriculum CFU Length(h)


This course has two main goals. The first is to provide students with knowledge of the object-oriented programming paradigm. The second is to make the students able to take advantage of this paradigm to implement programs using the Python language.

Dublin's descriptors

Knowledge and ability to understand: the student will have good knowledge and comprehension of the concepts concerning the object-oriented programming paradigm. 

Ability to apply the knowledge and the ability to understand: the student will be able to apply the object-oriented programming paradigm learned during the course to prototype and implement programs using the Python language. Furthermore, the student will be able to understand prototypes realized by a third party. 

Autonomy of judgment: thanks to the learned knowledge, the student will be able to evaluate the positive and negative aspects of a prototype or the Python implementation of a program utilizing the object-oriented programming paradigm. 

Communication skills: the student will be able to converse with skilled interlocutors about this course's contents and transmit them to interlocutors who lack this knowledge.

Ability to learn autonomously: the student will be able to quickly learning different object-oriented languages. 


To address the course contents, it is required the knowledge of at least one procedural-imperative programming language, such as C, Pascal, or others.

The students can take the exams of this course only if they have already passed the exams of:
Mathematical Analysis 1;
Geometry and Algebra;
Physics 1


1. Introduction of the object-oriented programming paradigm:
Definition of object, class, attribute, method. Base concepts: encapsulation, composition, inheritance. 
Techniques for schematizing objects: class diagrams drawn accordingly to the Unified Modelling Language (UML).

2. Overview of the Python language:
Introduction to the language, data types, boolean operators, conditional structures, cycles, functions, data structures. 

3. Objects in Python:
Creation of classes and object initialization.

4. Modules:
Using pre-defined modules and organizing the code creating new modules. 

5. Inheritance:
Usage of single inheritance in Python. Advanced concepts: multiple inheritances, polymorphism.

6. Exception handling:
Raising and handling exceptions. Defining new exceptions extending the exception class. 

7. Python data structures:
The features of the objects of type tuple, list, dictionary. 

8. Functions:
The features of some of the pre-defined objects of type function. 

9. Input/output:
The features of the file objects. 

10. Strings and serialization:
The features of the string objects, regular expressions, the serialization of objects using the pickle module. 

11. Iterators:
The features of the objects of type iterator. 

12. Libraries for scientific visualization:
The library matplotlib 

Teaching Methods

This course consists of theoretical lectures and exercises about all the course's contents (exercises illustrated in class and by the teacher and interactive practice exercises described by the tutor).

Due to the Covid-19 emergency, lectures may also be offered via streaming or recorded videos, and the exercise sessions may be conducted with the digital tools available. 

This course is organized in:
35 hours of theoretical lectures 
15 hours of exercises 
17 hours of interactive exercises

Verification of learning

The verification of learning is accomplished with a written exam consisting of theoretical questions regarding the object-oriented programming paradigm and exercises that must be solved using the Python language.

Due to the Covid-19 emergency, the verification of learning might be made digitally.

The maximum final mark is 33. The honors will be achieved by obtaining a final mark equal to or higher than 32. 

The number of exam sessions is the one defined by faculty regulation.


D. Phillips, Python 3 Object-Oriented Programming: Build robust and maintainable software with object-oriented design patterns in Python 3.8, Packt, 2018 (III edition).

Mark Lutz, Learning Python, O'Relly, 2013 (V edition).

Russ Miles & Kim Hamilton, Learning UML 2.0, O'Relly, 2006.

More Information

The course material, including the slides and the exercises' solutions, will be published on the course's website:

Questionnaire and social

Share on: