## 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 |
---|---|---|

I sem. | Oct 3, 2016 | Jan 31, 2017 |

II sem. | Mar 1, 2017 | Jun 9, 2017 |

Session | From | To |
---|---|---|

Sessione invernale Appelli d'esame | Feb 1, 2017 | Feb 28, 2017 |

Sessione estiva Appelli d'esame | Jun 12, 2017 | Jul 31, 2017 |

Sessione autunnale Appelli d'esame | Sep 1, 2017 | Sep 29, 2017 |

Session | From | To |
---|---|---|

Sessione estiva Appelli di Laurea | Jul 19, 2017 | Jul 19, 2017 |

Sessione autunnale Appelli di laurea | Oct 18, 2017 | Oct 18, 2017 |

Sessione invernale Appelli di laurea | Mar 21, 2018 | Mar 21, 2018 |

Period | From | To |
---|---|---|

Festa di Ognissanti | Nov 1, 2016 | Nov 1, 2016 |

Festa dell'Immacolata Concezione | Dec 8, 2016 | Dec 8, 2016 |

Vacanze di Natale | Dec 23, 2016 | Jan 8, 2017 |

Vacanze di Pasqua | Apr 14, 2017 | Apr 18, 2017 |

Anniversario della Liberazione | Apr 25, 2017 | Apr 25, 2017 |

Festa del Lavoro | May 1, 2017 | May 1, 2017 |

Festa della Repubblica | Jun 2, 2017 | Jun 2, 2017 |

Vacanze estive | Aug 8, 2017 | Aug 20, 2017 |

## 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. 2017/2018

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.

### Algorithms (2016/2017)

The teaching is organized as follows:

## Learning outcomes

------------------------

MM: COMPLESSITÀ

------------------------

The goal of this module is to introduce students to the main aspects of the computational complexity theory, and, in particular, to the NP-completeness theory and to the computational analysis of problems with respect to their approximability. Within the overall objectives of the CdS, this course allows students to widen and specialise their expertise in the analysis of algorithms and computational systems. It provides some advanced analysis tools to cope with non-trivial tasks. The students will acquire skills and knowledge to understand and cope with the computational difficulty in solving some common task. Students will be able to independently analyze a new problem, understand its structure and what makes it difficult and propose possible alternative approach to its solution (approximation, parametrisation) in the absence of provably efficient solutions.

------------------------

MM: ALGORITMI

------------------------

Algorithms form the backbone and are at the very heart of computer science, but they also candidate as the most ancient precursors of informatics and are transversal and pervasive over all disciplines. Their design requires the study and comprehension of the structure of the problem at hand, and most of the time it means and results into the crowning of this effort. The study of algorithms requires and offers methodologies and techniques of problem solving, and logical and mathematical competences. The course aims at stimulating the students and guide them in their path to acquire the competencies and basic methodologies required when facing the analysis of problems and in the design of algorithms for their solution. A first target is to make the students fully aware that in order to obtain solutions (algorithms) you must first go through a study and comprehension of the problem. Particular emphasis is given to the methodological aspects: the study of special cases, the role of conjecturing, proof techniques, building a dialog with the problem, and detection of its structure. A second target is to build up a good relationship and active knowledge of the inductive approach, and accustom students with the use of recursion in practice. The students are challenged to slash induction as a queen problem solving tool. Among the dialects of induction introduced, we insist on memoization and dynamic programming. The student is required to acquire dynamic programming as a technique of problem solving and algorithm design. Particular emphasis is given to the efficiency of algorithms. Complexity Theory (of the twin didactic unit) plays a profound methodological role in the analysis of problems. A main target of the course is to explicit, emphasize and illustrate this role. Last but not least, the path and process comprising the solution of a problem must be complete. Thanks to the several didactic problems made available in the automatic evaluation system used during the laboratory sessions, the student experiments and learns how to manage all the following phases: study and comprehension of the problem, conception of an algorithmic solution, design of an efficient algorithm, planning the implementation, conducting the implementation, testing and debugging.

## Program

------------------------

MM: COMPLESSITÀ

------------------------

Computational models, computational resources, efficient algorithms and tractable problems. 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. Recap of basic notions of computability: Turing Machines and Diagonalization. Hierarchy theorems for time complexity classes. Separability of classes and the existence of intermediate problem under the hypothesis the P is not equal NP. Space Complexity. Models and fundamental difference between the use of time resource and the space resource. The space complexity classes NL and L and their relationship with the time complexity class P. The centrality of the reachability problem for the study of space complexity. Completeness for space complexity classes: Log-space reductions; NL-completeness of reachability. Non-determinism and space complexity. Savitch theorem and Immelmann-Szelepcsenyi theorem. 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. Recommended Prerequisites ------------------------- To attend the course in a productive way, a student should be confident with the following topics: 1. Basic data structures as list, stack, queue, tree, heap. 2. Graph representation and fundamental graph algorithms: 2.1 Graph visit: BFS, DFS. 2.2 Topological ordering. Connected component. 2.3 Minimal spanning tree. Kruskal and Prim algorithm. 2.4 Single-source shortest path: Dijkstra algorithm and Bellman-Ford one. 2.5 All-pairs shortest path: Floyd-Warshall algorithm and Johnson one. 2.6 Max flow: Ford-Fulkerson algorithm. A recommended book to revise the above topics is ``Introduction to Algorithms" di T. H. Cormen, C. E. Leiserson, R. L. Rivest e C. Stein (3 ed.).

------------------------

MM: ALGORITMI

------------------------

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.

## Bibliography

Author | Title | Publishing house | Year | ISBN | Notes |
---|---|---|---|---|---|

Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani | Algorithms (Edizione 1) | McGraw-Hill Higher Education | 2007 | 978-0-07-352340-8 | |

Ingo Wegener | Complexity Theory | Springer | 2005 | ||

Christos H. Papadimitriou | Computational complexity | Addison Wesley | 1994 | 0201530821 | |

S. Arora, B. Barak | Computational Complexity. A modern approach (Edizione 1) | Cambridge University Press | 2009 | 9780521424264 | |

Garey, M. R. and Johnson, D. S. | Computers intractability: a guide to the theory of NP-completeness | Freeman | 1979 | 0-7167-1045-5 | |

T. Cormen, C. Leiserson, R. Rivest | Introduction to algorithms (Edizione 1) | MIT Press | 1990 | 0262031418 | |

Michael Sipser | Introduction to the Theory of Computation | PWS | 1997 | 053494728X | |

Cristopher Moore, Stephan Mertens | The Nature of Computation | Oxford | 2011 | ||

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein | Introduction to Algorithms (Edizione 3) | MIT Press | 2009 | 978-0-262-53305-8 |

## Examination Methods

When the student has collected, in its own mark wallet, both a positive mark for the Complexity module (at least 18) and a positive mark for the Algorithms module (at least 18), then he can ask for the recording of its final mark obtained as the rounded-up average of the above two marks, where 30+lode = 33. In order to get 30+lode as your final mark you need to get at least one lode and both marks should be at least 30. When you think your time has come to ask for registering this final mark, you send a mail to romeo.rizzi@univr.it making precise:

1. mark for the Algorithms module: specify the session of the exam at which you got your best mark, this best mark, and the bonus points. (Specify the file in the mark wallet).

2. mark for the Complexity module: specify the last session of the exam where you delivered your elaborate for correction.

3. specify your generalities (student code VRxxxxxx) and the expected mark.

The whole workflow for obtaining your mark is described at:

http://profs.sci.univr.it/~rrizzi/classes/Algoritmi/index.html

At the same page you can find the wallet of your marks for both the "Algorithms" and the "Computationl Complexity" modules comprising the course (if any), plus your extra scores for Algorithms in case you have collected any of them with projects. (For the Algorithms module, you will also find here the problems given at previous exam sessions,

and more detailed instructions on the procedures for the exam and for the composition and registration of your mark.)

For the module-specific informations we redirect to the Didactic Dashboard sheets of the single module.

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

## Type D and Type F activities

#### Documents and news

- PIANO DIDATTICO LM-18 LM-32 (octet-stream, it, 17 KB, 21/09/18)

**Modules not yet included**

## 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.