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 technical-administrative 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 |
---|---|---|
Semester 1 | Oct 2, 2023 | Jan 26, 2024 |
Semester 2 | Mar 4, 2024 | Jun 14, 2024 |
Session | From | To |
---|---|---|
Winter exam session | Jan 29, 2024 | Mar 1, 2024 |
Summer exam session | Jun 17, 2024 | Jul 31, 2024 |
Autumn exam session | Sep 2, 2024 | Sep 30, 2024 |
Session | From | To |
---|---|---|
Summer graduation session | Jul 19, 2024 | Jul 19, 2024 |
Autumn graduation session | Oct 21, 2024 | Oct 21, 2024 |
Winter graduation session | Mar 27, 2025 | Mar 27, 2025 |
Period | From | To |
---|---|---|
Festa di Ognissanti | Nov 1, 2023 | Nov 1, 2023 |
Festa dell'Immacolata | Dec 8, 2023 | Dec 8, 2023 |
Vacanze di Natale | Dec 24, 2023 | Jan 7, 2024 |
Festività pasquali | Mar 29, 2024 | Apr 1, 2024 |
Ponte della Festa della Liberazione | Apr 25, 2024 | Apr 26, 2024 |
Festa del Lavoro | May 1, 2024 | May 1, 2024 |
Festività del Santo Patrono: San Zeno | May 21, 2024 | May 21, 2024 |
Festa della Repubblica | Jun 2, 2024 | Jun 2, 2024 |
Vacanze estive | Aug 12, 2024 | Aug 17, 2024 |
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 enrollment year.
1° Year
Modules | Credits | TAF | SSD |
---|
2° Year activated in the A.Y. 2024/2025
Modules | Credits | TAF | SSD |
---|
Modules | Credits | TAF | SSD |
---|
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 (2023/2024)
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
Laboratorio
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
know how to program in some programming language.
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 NP-hardness 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 edge-centric vision over the node-centric 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; 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.
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. Self-certifying algorithms.
COMPLEXITY SIDE:
Relationships among computational problems. Polynomial reductions of one problem into another. The classes P, NP, co-NP. Notion of completeness. Proofs od NP-completeness: Cook's theorem; proofs of completeness using appropriate reductions. Search and Decision Problems. Self-Reducibility of NP-complete problems and existence of non-selfreducible 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 PSPACE-completeness.
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.
Bibliography
Didactic methods
in presence. The lessons will still be recorded and where convenient and upon request we could also serve those who need to follow remotely.
Learning assessment procedures
A written test which mainly focuses on Complexity topics and a laboratory test which mainly focuses on Algorithmic topics contribute to the vote in equal measure.
The writing is based on the path taken in class. For some examples of exercises, please refer to the reference repository for the written test:
https://github.com/romeorizzi/prove_scrive_AlgoComp
In the computer laboratory, students have to take a 5-hour test where they are assigned problems.
Students must analyze and understand the problems and their structure, identify algorithmic solutions for them, and implement these solutions in c/c++ or Pascal code. The more efficient this turns out to be, the more points you collect.
During the exam, students can gradually submit what they have produced to a site completely similar to the one used during the exercises in the laboratory and/or at home. In this way they can obtain an immediate and contextual evaluation that can guide them in conducting the test.
The solutions are evaluated based on the subtasks of the exercise that they manage to solve correctly without exceeding the time and memory resources predetermined by the exercise.
Find problems and reference materials for the laboratory test at the following repositories and platforms where you can try your hand at the exercises:
https://github.com/romeorizzi/esami-algo-public
https://rizzi.olinfo.it/algo-simula-prove
https://cms.di.unipi.it/algo/
The problems proposed there constitute the primary resource for preparing for the exam. The submission system you will use for the exam is TALight.
Even after obtaining a positive grade, the student can participate in multiple exams to see if he can improve it: the policy is to keep the best grade on the various exams, but there are also mechanisms by which the grades are added together.
You will find your grades portfolio on the course website:
http://profs.sci.univr.it/~rrizzi/classes/Algoritmi/index.html
Evaluation criteria
The various parts of the exam and grade management are characterized by maximum transparency.
Criteria for the composition of the final grade
When the student has, in his/her grade portfolio, both a positive grade (at least 18) for the Complexity module and a positive grade (at least 18) for the Algorithms module, he/she can ask the teacher in charge of the course to proceed with the recording of the grade for the entire course, obtained as the average of the grades for the two modules.
The average is rounded up and a 30 with honors is worth 33. To generate a 30 with honors as the final grade you need at least one honors and neither of the two evaluations below 30.
When you think the time has come to register your vote, send an email to romeo.rizzi@univr.it specifying:
1. your personal details (registration number VRxxxxxx);
2. vote you expect to be recorded;
3. vote for the algorithms part, specifying how it is composed (specifying the reference calls);
4. last complexity exam you submitted, with the grade obtained.
The ways to request registration and the entire workflow are shown on the page:
http://profs.sci.univr.it/~rrizzi/classes/Algoritmi/index.html
On the same page you will also find the portfolio of your votes, as well as information on how the vote for the Algorithms module is produced and managed.
Exam language
Italian. But, under request, we will prepare also an English text.
Type D and Type F activities
Le attività formative di tipologia D sono a scelta dello studente, quelle di tipologia F sono ulteriori conoscenze utili all’inserimento nel mondo del lavoro (tirocini, competenze trasversali, project works, ecc.). In base al Regolamento Didattico del Corso, alcune attività possono essere scelte e inserite autonomamente a libretto, altre devono essere approvate da apposita commissione per verificarne la coerenza con il piano di studio. Le attività formative di tipologia D o F possono essere ricoperte dalle seguenti attività.
1. Insegnamenti impartiti presso l'Università di Verona
Comprendono gli insegnamenti sotto riportati e/o nel Catalogo degli insegnamenti (che può essere filtrato anche per lingua di erogazione tramite la Ricerca avanzata).
Modalità di inserimento a libretto: se l'insegnamento è compreso tra quelli sottoelencati, lo studente può inserirlo autonomamente durante il periodo in cui il piano di studi è aperto; in caso contrario, lo studente deve fare richiesta alla Segreteria, inviando a carriere.scienze@ateneo.univr.it il modulo nel periodo indicato.
2. Attestato o equipollenza linguistica CLA
Oltre a quelle richieste dal piano di studi, per gli immatricolati dall'A.A. 2021/2022 vengono riconosciute:
- Lingua inglese: vengono riconosciuti 3 CFU per ogni livello di competenza superiore a quello richiesto dal corso di studio (se non già riconosciuto nel ciclo di studi precedente).
- Altre lingue e italiano per stranieri: vengono riconosciuti 3 CFU per ogni livello di competenza a partire da A2 (se non già riconosciuto nel ciclo di studi precedente).
Tali cfu saranno riconosciuti, fino ad un massimo di 6 cfu complessivi, di tipologia F se il piano didattico lo consente, oppure di tipologia D. Ulteriori crediti a scelta per conoscenze linguistiche potranno essere riconosciuti solo se coerenti con il progetto formativo dello studente e se adeguatamente motivati.
Gli immatricolati fino all'A.A. 2020/2021 devono consultare le informazioni che si trovano qui.
Modalità di inserimento a libretto: richiedere l’attestato o l'equipollenza al CLA e inviarlo alla Segreteria Studenti - Carriere per l’inserimento dell’esame in carriera, tramite mail: carriere.scienze@ateneo.univr.it
3. Competenze trasversali
Scopri i percorsi formativi promossi dal TALC - Teaching and learning center dell'Ateneo, destinati agli studenti regolarmente iscritti all'anno accademico di erogazione del corso https://talc.univr.it/it/competenze-trasversali
Modalità di inserimento a libretto: non è previsto l'inserimento dell'insegnamento nel piano di studi. Solo in seguito all'ottenimento dell'Open Badge verranno automaticamente convalidati i CFU a libretto. La registrazione dei CFU in carriera non è istantanea, ma ci saranno da attendere dei tempi tecnici.
4. CONTAMINATION LAB
Il Contamination Lab Verona (CLab Verona) è un percorso esperienziale con moduli dedicati all'innovazione e alla cultura d'impresa che offre la possibilità di lavorare in team con studenti e studentesse di tutti i corsi di studio per risolvere sfide lanciate da aziende ed enti. Il percorso permette di ricevere 6 CFU in ambito D o F. Scopri le sfide: https://www.univr.it/clabverona
ATTENZIONE: Per essere ammessi a sostenere una qualsiasi attività didattica, incluse quelle a scelta, è necessario essere iscritti all'anno di corso in cui essa viene offerta. Si raccomanda, pertanto, ai laureandi delle sessioni di dicembre e aprile di NON svolgere attività extracurriculari del nuovo anno accademico, cui loro non risultano iscritti, essendo tali sessioni di laurea con validità riferita all'anno accademico precedente. Quindi, per attività svolte in un anno accademico cui non si è iscritti, non si potrà dar luogo a riconoscimento di CFU.
5. Periodo di stage/tirocinio
Oltre ai CFU previsti dal piano di studi (verificare attentamente quanto indicato sul Regolamento Didattico): qui informazioni su come attivare lo stage.
Verificare nel regolamento quali attività possono essere di tipologia D e quali di tipologia F.
Insegnamenti e altre attività che si possono inserire autonomamente a libretto
years | Modules | TAF | Teacher |
---|---|---|---|
1° 2° | Introduction to smart contract programming for ethereum | D |
Sara Migliorini
(Coordinator)
|
years | Modules | TAF | Teacher |
---|---|---|---|
1° 2° | LaTeX Language | D |
Enrico Gregorio
(Coordinator)
|
1° 2° | Python programming language | D |
Carlo Combi
(Coordinator)
|
1° 2° | Programming Challanges | D |
Romeo Rizzi
(Coordinator)
|
1° 2° | Protection of intangible assets (SW and invention)between industrial law and copyright | D |
Mila Dalla Preda
(Coordinator)
|
years | Modules | TAF | Teacher |
---|---|---|---|
1° 2° | Cooperative Game Theory in the (Deep) RL Era | D |
Alessandro Farinelli
(Coordinator)
|
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 also via the Univr app.
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 thesis-related 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 thesis proposals
Attendance modes and venues
As stated in the Teaching Regulations, attendance at the course of study is not mandatory.
Part-time enrolment is permitted. Find out more on the Part-time enrolment possibilities page.
The course's teaching activities take place in the Science and Engineering area, which consists of the buildings of Ca‘ Vignal 1, Ca’ Vignal 2, Ca' Vignal 3 and Piramide, located in the Borgo Roma campus.
Lectures are held in the classrooms of Ca‘ Vignal 1, Ca’ Vignal 2 and Ca' Vignal 3, while practical exercises take place in the teaching laboratories dedicated to the various activities.