| ALGORITHMS AND DATA STRUCTURES
(obiettivi)
General objectives
The primary objective is to study algorithms and data structures that efficiently solve problems whose solution, using trivial approaches, would require very high resources. The algorithms studied will be implemented in Java language.
Specific objectives
Knowledge and ability to understand Basic data structures and their use in solving sorting, searching, and graph problems will be shown. It will be shown how the data structures described are made available in Java language. The student will be able to determine the computational complexity of algorithms, and associate them with the appropriate complexity class.
Ability to apply knowledge and understanding At the end of the course the students will be able to determine algorithms to efficiently solve complex problems, in particular problems on graphs, and choose the most suitable data structures to obtain an efficient implementation of the algorithm. They will also be able to use the Java classes that implement the data structures studied.
Autonomy of judgment Students will be able to distinguish the computational complexity of problems and algorithms, and to identify the computationally more costly steps in solving a problem.
Communication skills Students will be able to describe, in appropriate terms, the characteristics of the main data structures, and identify the primitives needed to efficiently implement an algorithm.
Learning ability Students who pass the exam will be able to take advanced courses, of an applicative nature, that require the use of sophisticated algorithms. They will also be able to appreciate software engineering and computational complexity theory teachings.
|
|
Codice
|
10589423 |
|
Lingua
|
ENG |
|
Tipo di attestato
|
Attestato di profitto |
|
Crediti
|
6
|
|
Settore scientifico disciplinare
|
INF/01
|
|
Ore Aula
|
48
|
|
Ore Studio
|
-
|
|
Attività formativa
|
Attività formative affini ed integrative
|
Canale Unico
|
Docente
|
FRANCIOSA PAOLO GIULIO
(programma)
The course covers algorithmic programming techniques. The primary goal is to study algorithms and data structures that efficiently solve problems that would require very high computational resources (time or space) using trivial approaches. We will address problems frequently arising in practical applications and real-world situations, such as sorting, searching, and graph traversal, as well as general design techniques including divide and conquer, greedy algorithms, and dynamic programming. The course will cover the entire algorithm engineering cycle, addressing the design, theoretical analysis, implementation, and experimental evaluation of algorithms and data structures. The students will practice solving computational problems, designing new algorithms, and implementing efficient solutions in Python.
 Introduction to the Design and Analysis of Algorithms Anany Levitin, Pearson
A more comprehensive and deep text is: Introduction to Algorithms by T. Cormen, C. Leiserson, R. Rivest, and C. Stein, McGraw-Hill.
|
|
Date di inizio e termine delle attività didattiche
|
- |
|
Date degli appelli
|
Date degli appelli d'esame
|
|
Modalità di erogazione
|
Tradizionale
|
|
Modalità di frequenza
|
Non obbligatoria
|
|
|