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

Informazioni aggiuntive

Course Curriculum CFU Length(h)


This laboratory provides working knowledge of two specific software tools that are of interest for environmental engineering: the Python programming language and object-oriented programming, and database management systems.

The learning outcomes expressed in terms of the Dublin descriptors are the following:

Knowledge and understanding
Students will know and understand:
- the main elements of the Python programming language and of object-oriented programming;
- the basic elements of the entity-relationship conceptual model and of the relational logical model for database design;
- the basic elements of the SQL language to define the scheme of a database and to define queries;
- the main elements of the PostgreSQL database management system.

Applying knowledge and understanding
Students will be capable of:
- developing Python programs for solving data processing problems of medium difficulty level;
- designing simple relational databases starting from requirements, defining their scheme using the SQL language, defining queries using the same language, and implementing a database using the PostgreSQL DBMS.

Making judgements
Students will be capable of:
- choosing among several available options when designing Python programs, related to data structures (classes) and to program structure, and to identifying the most effective algorithm;
- choosing among several available options when designing simple relational databases, related to conceptual and logical design and to query definition.

Students will be able to properly express aspects and issues related to Python program design, starting from a given algorithm, and will learn the basic communication capabilities needed to interact with non-technical users to define database requirements.


Basic knowledge of computer architecture and of a structured programming language (C, Python, etc.). Good knowledge of the basic concepts of mathematical analysis and linear algebra.


The Python programming language (30 h). Programming environments: editor and shell. Main statements: assignment, conditional (if...else), iterative (while, for); the break statement. Main built-in functions (print, input, etc.) and libraries (maty, random, etc.). User-defined functions. Object-oriented programming: definition of new classes, instance variables, methods.

Relational databases (20 h). Logical design: the Relational model. Conceptual design: the Entity-Relationship model. The SQL language for data definition and manipulation (query formulation). Basic elements of the PostgreSQL software for relational database management.

Teaching Methods

50 hours of lectures and computer exercises in a computer laboratory.

Due to the Covid-19 pandemic, classes can be delivered in live streaming or their recording can made available on-line, and laboratory exercises can be carried out through resources that will be available for remote learning, such as communication and collaboration platforms.

Verification of learning

This is a pass-or-fail exam.
The exam is subdivided into two parts:
- Python language: an oral test consisting in developing Python programs;
- developing and discussing a project consisting in: conceptual and logical design of a relational database, starting from given requirements; definition of the logical schema and of queries; using SQL for defining the database schema and for writing queries.
To pass the exam students should:
- know the main elements of the Python language and its programming environment, and be able to develop programs of medium difficulty level;
- be able to carry out the conceptual and logical design of simple databases, starting from given requirements, and to define queries; be able to use the SQL language to define the database scheme and to write queries.

Due to the Covid-19 pandemic, the oral test at the University premises can be replaced by an oral test carried out through resources that will be available for remote learning.


Python language: C. Horstmann, R.D. Necaise, "Python for Everyone", Wiley.

The following textbook is suggested for relational data bases (available in several editions):
Atzeni, Ceri, Paraboschi, Torlone, "Basi di Dati - Modelli e linguaggi di interrogazione", McGraw-Hill.

More Information

Teaching material is available on the following web site (only in Italian):
The web site includes the laboratory syllabus in detail, and the solution of all in-class exercises.

Questionnaire and social

Share on:
Impostazioni cookie