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 magistrale in Ingegneria e scienze informatiche - 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:

1° Year 

ModulesCreditsTAFSSD
12
B
ING-INF/05
6
B
ING-INF/05
6
B
ING-INF/05
12
B
ING-INF/05

2° Year   activated in the A.Y. 2013/2014

ModulesCreditsTAFSSD
6
B
INF/01
Altre attivita' formative
4
F
-
ModulesCreditsTAFSSD
12
B
ING-INF/05
6
B
ING-INF/05
6
B
ING-INF/05
12
B
ING-INF/05
activated in the A.Y. 2013/2014
ModulesCreditsTAFSSD
6
B
INF/01
Altre attivita' formative
4
F
-
Modules Credits TAF SSD
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

4S02709

Teacher

Romeo Rizzi

Credits

6

Language

Italian

Scientific Disciplinary Sector (SSD)

ING-INF/05 - INFORMATION PROCESSING SYSTEMS

Period

II semestre dal Mar 4, 2013 al Jun 14, 2013.

To show the organization of the course that includes this module, follow this link:  Course organization

Learning outcomes

The goal of this course is to familiarize with the main techniques and methodologies for the design and analysis of efficient algorithms.
We also present some more advanced paradigms and introduce a few approaches
for the dealing with NP-hard problems (approximation algorithms, implicit enumeration and branch & bound algorithms, fixed parameter tractability).

Recommended Prerequisite
------------------------
To attend the course lessons in a productive way, a student should be aware of the complexity issues related to problems and algorithms and interested in the design of efficient algorithms.

PROGRAMMING: c/c++ is the reference programming language.

ALGORITHMS: The student should be confident with the following concepts:
1. problems and formulations, encodings and instances
2. running time, memory consumption, worst case/average/amortized analysis, asymptotic growth and notation
3. Basic data structures as list, stack, queue, tree, heap.
4. Sorting
5. Graph representation and fundamental graph algorithms:
5.1 Graph visit: BFS, DFS.
5.2 Topological ordering. Connected component.
5.3 Minimal spanning tree. Kruskal and Prim algorithm.
5.4 Single-source shortest path: Dijkstra algorithm and Bellman-Ford one.
5.5 All-pairs shortest path: Floyd-Warshall algorithm and Johnson one.
5.6 Max flow: Ford-Fulkerson algorithm.

Program

We follow a direct approach driven by the eager of solving
interesting algorithmic problems together.
Just to draw a path, that could be the following.

Main concepts recall about computational problems: definition, instances, encoding, precise and approximate models. Optimization computational problem.
Main concepts recall about algorithms: computational resources, input encoding, input size/cost, computational time. Worst and average analysis. Computational time and growth order.
Computational time vs. hardware improvements: main relations. Efficient algorithms and tractable problems.

Recursion and induction
-----------------------
examples of the inductive approach in solving problems.

Divide et impera paradigm
-------------------------
Definition and application to some problems.

Greedy paradigm
---------------
Definition and application to some problems.

Dynamic programming paradigm
----------------------------
Definition and application to some problems.
Memoization and Dynamic programming.

Branch & Bound technique
------------------------
Definition and application to some problems.
Lower bounds and upper bounds.

Approximations algorithms
-------------------------
A few classical examples (node cover, set cover, Christofides for the metric TSP, an FPTAS for the knapsack).

Fixed parameter tractability
----------------------------
A few examples.
Kernels, iterative compression, color coding.

Reference texts
Author Title Publishing house Year ISBN Notes
T. Cormen, C. Leiserson, R. Rivest Introduction to algorithms (Edizione 1) MIT Press 1990 0262031418
T. Cormen, C. Leiserson, R. Rivest, C. Stein Introduzione agli Algoritmi e Strutture Dati (Edizione 2) McGraw-Hill 2005 88-386-6251-7

Examination Methods

Part of the exam of the qualifying in Algorithms and Complexity
(the other half is Complexity).
The test for Algorithms lasts 5 houers and takes places in computer room.
It is required to design and code (in c or c++) efficient as possible
algorithms for three given problems.

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