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.

Study Plan

This information is intended exclusively for future freshmen who will enroll for the 2025/2026 academic year.
If you are already enrolled in this course of study, consult the information available on the course page:

Master's degree in Computer Science and Engineering - Enrollment until 2024/2025

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:

1° Year 

ModulesCreditsTAFSSD
Four modules to be chosen among the following
6
B
ING-INF/05
6
B
ING-INF/05

2° Year   It will be activated in the A.Y. 2026/2027

ModulesCreditsTAFSSD
Final exam
24
E
-
It will be activated in the A.Y. 2026/2027
ModulesCreditsTAFSSD
Final exam
24
E
-
Modules Credits TAF SSD
Between the years: 1°- 2°
Two modules to be chosen mong the following
- A.A. 2025/2026 Web applications not activated
- A.A. 2026/2027 Automated software verification not activated
6
B
INF/01
6
B
INF/01
6
B
INF/01
6
B
INF/01
Between the years: 1°- 2°
Three modules to be chosen among the following
- A.A. 2025/2026 Web applications not activated
- A.A. 2026/2027 Automated software verification not activated
6
C
INF/01
6
C
INF/01
6
C
INF/01
6
C
INF/01
Between the years: 1°- 2°
Further language skills (students who didn't take B2 ENG exam during bachelor's degree have to take it during master's degree. Who did take it during bachelor's can take: ENG (C1, C2), SPA (B1, B2, C1, C2), FRA (B1, B2, C1, C2), TED (B1, B2, C1, C2)
3
F
-
Between the years: 1°- 2°
Further activities
3
F
-
Between the years: 1°- 2°

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

4S008896

Credits

12

Language

Italian

Scientific Disciplinary Sector (SSD)

ING-INF/05 - INFORMATION PROCESSING SYSTEMS

Courses Single

Authorized

The teaching is organized as follows:

Teoria

Credits

10

Period

2nd semester

Academic staff

Ferdinando Cicalese

Laboratorio

Credits

2

Period

2nd semester

Academic staff

Romeo Rizzi

Learning objectives

The overall targets of the course is to expose some aspects of the deep and important dialectic exchange between the search for algorithmic solutions and the study of the complexity of problems. Algorithms are the backbone and the substance of information technologies, but at the same time their study goes beyond the "mere" computer science and is pervasive to all the disciplines that are problem-bearers. The design of an algorithm starts from the study of the structure of the problem to be solved and it usually represents the highest achievement of this process. The study of algorithms requires and offers methodologies and techniques of problem solving, logical and mathematical skills. The course therefore aims to provide students with fundamental skills and methodologies for the analysis of problems and the design of the algorithms for solving them. Particular emphasis is given to the efficiency of the algorithms themselves, and the theory of computational complexity plays a profound methodological role in the analysis of problems. With reference to the overall didactic aims of the Master program, the course leads students to deepen and expand the three-year training in the field of analysis and evaluation of problems, algorithms, and computational models, providing a wealth of advanced tools to address non-trivial problems in different IT fields. The students will acquire logical-mathematical skills, techniques, experience and methodologies useful in the analysis of algorithmic problems, from detecting their structure and analyzing their computational complexity to designing efficient algorithms, and then planning and conducting their implementation. Besides that, The course provides the foundations of computational complexity theory, focussing on: the theory of NP-completeness; approximation algorithms and basic approaches for the analysis of the approximation guarantee of algorithms for hard problems; and parameterized approaches to hard problems. The student will apply the main algorithmic techniques: recursion, divide and conquer, dynamic programming, some data structures, invariants and monovariants. The student will develop sensitivity about which problems can be solved efficiently and with which techniques, acquiring also dialectical tools to place the complexity of an algorithmic problem and identify promising approaches for the same, looking at the problem to grasp its structure. She will learn to produce, discuss, evaluate, and validate conjectures, and also independently tackle the complete path from the analysis of the problem, to the design of a resolver algorithm, to the coding and experimentation of the same, even in research contexts either in the private sector or at research institutions. Based on the basic notions acquired of computational complexity, the students will be able to employ reductions, standard techniques in complexity theory, to analyze the structural properties of computational problems and identify possible alternative approaches (approximation, parameterization) in the absence of (provably) efficient solutions After attending the course the students will be able to: classify intractable computational problems; understand and verify a formal proof; read and understand a scientific article where a new algorithm is presented together with the analysis of its computational complexity.

Prerequisites and basic notions

Basic discrete mathematics. Basic discrete probability. Basics of computability and analysis of algorithms

Program

1. The workflow of problem solving: analysis and comprehension of the problem, conception of an algorithmic solution, design of an efficient algorithm, planning the implementation, conducting the implementation, testing and debugging.
2. Methodology in analyzing a problem:
The study of special cases. Particularization and generalization. Conjectures. Simplicity assumptions.
Solving a problem by reducing it to another. Reductions among problems to organize them into classes. Reducing problems to isolate the most fundamental questions. The role of complexity theory in classifying problems into classes. The role of complexity theory in analyzing problems. Counterexamples and NP-hardness proofs and SPACE-hardness proofs. Good conjectures and good characterizations. Decomposing problems and inductive thinking.
3. Algorithm design general techniques.
Recursion. Divide et impera. Recursion with memoization. Dynamic programming (DP). Greedy.
DP on sequences. DP on DAGs. More in depth: good characterization of DAGs and scheduling, composing partial orders into new ones.
DP on trees. The asymptotic eye on worst case performance guides the design of algorithms:
the binary search example; negligible improvements; amortized analysis.
Some data structures: binary heaps; prefix-sums; Fenwick trees; range trees.
4. Algorithms on graphs and digraphs.
Bipartite graphs: recognition algorithms and good characterizations.
Eulerian graphs: recognition algorithms and good characterizations.
Shortest paths. Minimum spanning trees. Maximum flows and minimum cuts. Bipartite matchings and node covers.
5. Approaches to the solution of hard problems: approximation algorithms and complexity classes with respect to the approximation.
6. General hints on implementing, coding, testing and debugging.
Plan your implementation. Anticipate the important decisions, and realize where the obscure points are. Try to go round the most painful issues you foresee. Code step by step. Verify step by step. Use the assert. Testing and debugging techniques. Self-certifying algorithms.

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

Lectures (blackboard and slides) and lab sessions

Learning assessment procedures

The exam comprises a written test and a lab exam (where students are requested to design solutions to simple problems, code them and test them on given instances)

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

Exercises will assess both the ability to reproduce what seen in class and to reelaborate those methodologies in new contexts.

Criteria for the composition of the final grade

There will be a grade on the theory written test and a grade on the lab exam and the final grade will be the average of the two

Exam language

Italiano e Inglese