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.
Academic calendar
The academic calendar shows the deadlines and scheduled events that are relevant to students, teaching and technicaladministrative staff of the University. Public holidays and University closures are also indicated. The academic year normally begins on 1 October each year and ends on 30 September of the following year.
Course calendar
The Academic Calendar sets out the degree programme lecture and exam timetables, as well as the relevant university closure dates..
Period  From  To 

I semestre  Oct 1, 2020  Jan 29, 2021 
II semestre  Mar 1, 2021  Jun 11, 2021 
Session  From  To 

Sessione invernale d'esame  Feb 1, 2021  Feb 26, 2021 
Sessione estiva d'esame  Jun 14, 2021  Jul 30, 2021 
Sessione autunnale d'esame  Sep 1, 2021  Sep 30, 2021 
Session  From  To 

Sessione Estiva  Jul 15, 2021  Jul 15, 2021 
Sessione Autunnale  Oct 15, 2021  Oct 15, 2021 
Sessione Invernale  Mar 15, 2022  Mar 15, 2022 
Period  From  To 

Festa dell'Immacolata  Dec 8, 2020  Dec 8, 2020 
Vacanze Natalizie  Dec 24, 2020  Jan 3, 2021 
Epifania  Jan 6, 2021  Jan 6, 2021 
Vacanze Pasquali  Apr 2, 2021  Apr 5, 2021 
Santo Patrono  May 21, 2021  May 21, 2021 
Festa della Repubblica  Jun 2, 2021  Jun 2, 2021 
Exam calendar
Exam dates and rounds are managed by the relevant Science and Engineering Teaching and Student Services Unit.
To view all the exam sessions available, please use the Exam dashboard on ESSE3.
If you forgot your login details or have problems logging in, please contact the relevant IT HelpDesk, or check the login details recovery web page.
Academic staff
Study Plan
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 enrolment year.
Modules  Credits  TAF  SSD 

1° Year
2° Year activated in the A.Y. 2021/2022
Modules  Credits  TAF  SSD 

Modules  Credits  TAF  SSD 

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.
Problems solving: Algorithms and Complexity (2020/2021)
Teaching code
4S008896
Academic staff
Coordinatore
Credits
12
Language
Italian
Scientific Disciplinary Sector (SSD)
INGINF/05  INFORMATION PROCESSING SYSTEMS
Period
II semestre dal Mar 1, 2021 al Jun 11, 2021.
Learning outcomes
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 problembearers. 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 threeyear training in the field of analysis and evaluation of problems, algorithms, and computational models, providing a wealth of advanced tools to address nontrivial problems in different IT fields. The students will acquire logicalmathematical 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 NPcompleteness; 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.
Program
The Yin and the Yang of problem solving are the general methods for the solutions of instances of the problem (the Algorithms) on one side, and a detached aesthetic eye on the richness of the problem (Complexity) on the other. Two passionate enthusiasts will guide you in the exploration of these two synergistic arts with the hope that in you they might merge into just one.
ALGORITHMS SIDE:
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.
Building a dialog with the problem. 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 NPhardness proofs. Good conjectures and good characterizations. The belief can make conjectures true. 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. More in depth: adoption of the children one by one; advantages of an edgecentric vision over the nodecentric one.
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; prefixsums; 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.
The kernel of a DAG. Progressively finite games. Sums of games.
5. 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. Selfcertifying algorithms.
COMPLEXITY SIDE:
Relationships among computational problems. Polynomial reductions of one problem into another. The classes P, NP, coNP. Notion of completeness. Proofs od NPcompleteness: Cook's theorem; proofs of completeness using appropriate reductions. Search and Decision Problems. SelfReducibility of NPcomplete problems and existence of nonselfreducible problems.
Space Complexity. Models and fundamental difference between the use of time resource and the space resource. Completeness for space complexity classes. The classes PSPACE and NPSPACE. Examples of reductions to prove PSPACEcompleteness.
Introduction to the approximation algorithms for optimisation problems. Examples of approximation algorithms. Classification of problems with respect to their approximabuility. The classes APX, PTAS, FPTAS. Notion of inapproximability; the gap technique to prove inapproximability results; examples of approximation preserving reductions.
Examples of simple randomised algorithms in solving hard problems. . Examples of parameterized approaches to solve hard problems.
Author  Title  Publishing house  Year  ISBN  Notes 

J. Kleinberg, É. Tardos  Algorithm Design (Edizione 1)  Addison Wesley  2006  9780321295354  
Ingo Wegener  Complexity Theory  Springer  2005  
Garey, M. R. and Johnson, D. S.  Computers intractability: a guide to the theory of NPcompleteness  Freeman  1979  0716710455  
Michael Sipser  Introduction to the Theory of Computation  PWS  1997  053494728X  
T. Cormen, C. Leiserson, R. Rivest, C. Stein  Introduzione agli Algoritmi e Strutture Dati (Edizione 2)  McGrawHill  2005  8838662517  
Cristopher Moore, Stephan Mertens  The Nature of Computation  Oxford  2011 
Examination Methods
The exam consists of a written test and a programming test, and the final grade is determined by the sum of the points in both tests. Both tests will include both topics of Algorithms and Complexity to verify that the student has acquired competence in both subjects and can exploit their complementarity.
Examples and additional information on the lab test can be found at:
https://rizzi.olinfo.it/algosimulaprove
https://github.com/romeorizzi/esamialgopublic
Examples of the type of exercises included in the written test can be found at the repo:
https://github.com/romeorizzi/prove_scritte_AlgoComp
Type D and Type F activities
Le attività formative in ambito D o F comprendono gli insegnamenti impartiti presso l'Università di Verona o periodi di stage/tirocinio professionale.
Nella scelta delle attività di tipo D, gli studenti dovranno tener presente che in sede di approvazione si terrà conto della coerenza delle loro scelte con il progetto formativo del loro piano di studio e dell'adeguatezza delle motivazioni eventualmente fornite.
years  Modules  TAF  Teacher 

1° 2°  MatlabSimulink programming  D 
Bogdan Mihai Maris
(Coordinatore)

1° 2°  Programming Challanges  D 
Romeo Rizzi
(Coordinatore)

years  Modules  TAF  Teacher 

1° 2°  Introduction to 3D printing  D 
Franco Fummi
(Coordinatore)

1° 2°  Python programming language  D 
Vittoria Cozza
(Coordinatore)

1° 2°  HW components design on FPGA  D 
Franco Fummi
(Coordinatore)

1° 2°  Rapid prototyping on Arduino  D 
Franco Fummi
(Coordinatore)

1° 2°  Protection of intangible assets (SW and invention)between industrial law and copyright  D 
Roberto Giacobazzi
(Coordinatore)

years  Modules  TAF  Teacher 

1° 2°  The fashion lab (1 ECTS)  D 
Maria Caterina Baruffi
(Coordinatore)

1° 2°  The course provides an introduction to blockchain technology. It focuses on the technology behind Bitcoin, Ethereum, Tendermint and Hotmoka.  D 
Nicola Fausto Spoto
(Coordinatore)

Career prospects
Module/Programme news
News for students
There you will find information, resources and services useful during your time at the University (Student’s exam record, your study plan on ESSE3, Distance Learning courses, university email account, office forms, administrative procedures, etc.). You can log into MyUnivr with your GIA login details: only in this way will you be able to receive notification of all the notices from your teachers and your secretariat via email and soon also via the Univr app.
Further services
I servizi e le attività di orientamento sono pensati per fornire alle future matricole gli strumenti e le informazioni che consentano loro di compiere una scelta consapevole del corso di studi universitario.
Graduation
Deadlines and administrative fulfilments
For deadlines, administrative fulfilments and notices on graduation sessions, please refer to the Graduation Sessions  Science and Engineering service.
Need to activate a thesis internship
For thesisrelated internships, it is not always necessary to activate an internship through the Internship Office. For further information, please consult the dedicated document, which can be found in the 'Documents' section of the Internships and work orientation  Science e Engineering service.
Final examination regulations
List of theses and work experience proposals
Attendance
As stated in the Teaching Regulations for the A.Y. 2022/2023, attendance at the course of study is not mandatory.
Please refer to the Crisis Unit's latest updates for the mode of teaching.