Studying at the University of Verona

Here you can find information on the organisational aspects of the Programme, lecture timetables, learning activities and useful contact details for your time at the University, from enrolment to graduation.

This information is intended exclusively for students already enrolled in this course.
If you are a new student interested in enrolling, you can find information about the course of study on the course page:

Laurea in Matematica applicata - Enrollment from 2025/2026

The Study Plan includes all modules, teaching and learning activities that each student will need to undertake during their time at the University.
Please select your Study Plan based on your enrollment year.

CURRICULUM TIPO:

2° Year   activated in the A.Y. 2024/2025

ModulesCreditsTAFSSD
6
A
MAT/02
6
B
MAT/03
6
C
SECS-P/01
6
C
SECS-P/01
English B2
6
E
-

3° Year   It will be activated in the A.Y. 2025/2026

ModulesCreditsTAFSSD
6
C
SECS-P/05
Final exam
6
E
-
activated in the A.Y. 2024/2025
ModulesCreditsTAFSSD
6
A
MAT/02
6
B
MAT/03
6
C
SECS-P/01
6
C
SECS-P/01
English B2
6
E
-
It will be activated in the A.Y. 2025/2026
ModulesCreditsTAFSSD
6
C
SECS-P/05
Final exam
6
E
-
Modules Credits TAF SSD
Between the years: 1°- 2°- 3°
Further activities
6
F
-
Between the years: 1°- 2°- 3°

Legend | Type of training activity (TTA)

TAF (Type of Educational Activity) All courses and activities are classified into different types of educational activities, indicated by a letter.




S Placements in companies, public or private institutions and professional associations

Teaching code

4S02751

Credits

12

Coordinator

Ugo Solitro

Language

Italian

Scientific Disciplinary Sector (SSD)

INF/01 - INFORMATICS

Courses Single

Authorized

The teaching is organized as follows:

Teoria

Credits

9

Period

Semester 1, Semester 2

Academic staff

Ugo Solitro

Laboratorio

Credits

3

Period

Semester 1, Semester 2

Academic staff

Nicola Drago

Learning objectives

This course proposes providing the fundamentals skills in order to analyze and resolve problems by means of developing programs. The general objectives of this module are - the knowledge of the principles of programming and of programming languages, - the mastery of fundamental techniques for analyzing problems and developing their algorithmic solutions, - the introduction to the methods for the evaluation of correctness and efficiency of algorithms. In the laboratory, we will practice the above principles by means of a programming activity.

Prerequisites and basic notions

Knowledge and mathematical and scientific skills provided by the upper secondary school.
In particular:

- Sets, functions, relations and graphs.
- Numerical sets and their fundamental properties.
- Plane geometry and Cartesian representation of geometric elements.
- Representation of data, relations and functions.

Program

INTRODUCTION

- Problems and Solutions.
- Models of Computations: abstract machine, compiler and interpreter.
- Programming languages: formal languages, compiler, interpreter.

PART I - Problems, algorithms and programs.

- Imperative programming
- Elementary of programming: basic instructions and development of simple programs; variables, expressions and assignment.
- Data types. The general concept of data type: characterisation and data representation. Abstract Data Types.
- Primitive data types: characterisation, use and related problems.
- Structured data types: array, record, file, pointer, string and other data structures.
- Program structure. Fundamental instructions. Sub-programs: structure, parameters and visibility. Recursion.
- Object Oriented Programming.
- Basics of objects: classes, objects, attributes, constructors, modifiers.
- Advanced data structures: representation of sequences, vector and matrices; inductive and dynamic data structures; introduction to lists, trees and graphs.

PART II - Analysis of Algorithms

- Correctness: termination, logic properties; methods for the correctness verification.
- Efficiency of algorithms.
- Introduction to the complexity. Performance of algorithms. Evaluation of efficiency. Computational costs.
- Asymptotic estimation of the complexity in time and space. The worst and medium case.
- Amortised analysis.
- Study of fundamental examples.
- Sequences: static and dynamic implementation and algorithms.
- Research and Sorting Algorithms: basic search, binary search, insertion and selection sort, merge sort, quick sort.
- Matrices and Vectors: implementation, operations and algorithms.
- Dynamic sequences: abstract definition and implementation; basic operations.
- Trees. Abstract definition and implementation. Basic operation. Binary research trees.
- Introduction to graphs.

PRACTICAL PART.

During the practical activities that take place in the Laboratory, all the techniques necessary to apply the topics developed in theory lessons are introduced through the use of programming languages. The principles of imperative programming with the Python language are introduced and the fundamental aspects of object programming with the Java language are explored.
The primary objective of the Laboratory activity is the construction of the solution of a problem through the use of a specific programming language. We address the steps that starting from the informal description of the problem lead to its resolution through the characterization of the problem, the design of the solution and its coding.
Particular attention is paid to the use of methods and techniques that improve the legibility, maintainability and reuse of the code.

Bibliography

Visualizza la bibliografia con Leganto, strumento che il Sistema Bibliotecario mette a disposizione per recuperare i testi in programma d'esame in modo semplice e innovativo.

Didactic methods

The teaching consists of lessons and exercises in the classroom and in the laboratory with the possible use of a computer.
Some learning activities have to be carried out as homework.

Any additional resources are made available in the teaching restricted area.

Learning assessment procedures

The exam is divided into three parts:

- written test: questions and exercises;
- practical test: development of a laboratory project;
- final interview: discussion of the papers and questions about the program carried out during the lessons.

Written and practical tests may be replaced in whole or in part by passing the tests in progress.

Students with disabilities or specific learning disorders (SLD), who intend to request the adaptation of the exam, must follow the instructions given HERE

Evaluation criteria

The purpose of the examination tests is to verify:

- general knowledge of the fundamental constructs of imperative and object-oriented programming;
- the ability to effectively and correctly use a programming language;
- the ability to manage the resolution process: strict problem description and characterization, data representation design, resolution code design and development, solution efficiency and correctness analysis.

Criteria for the composition of the final grade

The final grade is obtained as an average of the evaluations of the three planned tests: written, practical and oral.

Important note. To pass the final exam you must obtain a positive assessment - at least 60% of the score - in each of the three tests indicated.

Exam language

Italiano