Scientific Disciplinary Sector (SSD)
ING-INF/05 - INFORMATION PROCESSING SYSTEMS
The teaching is organized as follows:
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.
See the sheets for the two separate modules of this course.
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.
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 email@example.com 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:
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.