ALGORITMI E STRUTTURE DATI - MOD.2

Anno accademico
2022/2023 Programmi anni precedenti
Titolo corso in inglese
ALGORITHMS AND DATA STRUCTURES - PART 2
Codice insegnamento
CT0371 (AF:354582 AR:190170)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di ALGORITMI E STRUTTURE DATI
Livello laurea
Laurea
Settore scientifico disciplinare
INF/01
Periodo
Annuale
Anno corso
2
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
L'insegnamento è uno dei corsi fondamentali del corso di studio e fornisce un'introduzione agli algoritmi, ovvero alla formalizzazione dei problemi, all'individuazione di soluzioni computazionali, e all'analisi di tali soluzioni, dal punto di vista della correttezza e dell'efficienza nell'uso di risorse. Inoltre presenta varie strutture dati fondamentali e tecniche di base per la progettazione e l'analisi degli algoritmi.
Conoscenza e comprensione:
- conoscenza e comprensione dei principali algoritmi e strutture dati;
- comprensione e valutazione della complessità dei problemi informatici e capacità di selezionare metodi adeguati per la modellazione e risoluzione del problema.

Capacità di applicare conoscenza e comprensione:
- capacità logico-deduttive e di problem solving;
- capacità di formalizzare e implementare soluzioni per problemi reali e identificazione di pattern di soluzione appropriati;

Capacità di giudizio
- Sapere formulare ed argomentare soluzioni, sviluppando anche un approccio critico alla valutazione di soluzioni alternative.
Familiarità con i concetti di base della matematica discreta e dell'analisi matematica. Conoscenza del linguaggio C++ e dei rudimenti della programmazione.
Strutture dati elementari: Array, liste e alberi.

Alberi binari di ricerca.

Heap e code di priorità.

Tabelle Hash.

Ordinamento: Insertion sort, Merge sort, Heapsort, Quicksort.

Ordinamento in tempo lineare: counting sort, radix sort.

Programmazione dinamica.
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to
algorithms (3rd Edition), MIT Press, 2009. (Traduzione italiana a cura di
Livio Colussi edita da McGraw-Hill, Milano, 2010.)

C. Demetrescu, I. Finocchi, G. F. Italiano. Algoritmi e strutture dati
(seconda edizione), McGraw-Hill, 2008.
La verifica dell'apprendimento avviene attraverso una prova scritta e una prova orale. La prova scritta ha durata di 3 ore ed è divisa in due parti. La prima parte consiste di 3 quesiti da svolgere in 30 minuti. Tali quesiti richiedono una risposta rapida su argomenti affrontati a lezione e mirano a verificare l'acquisizione dei concetti di base del corso. La seconda parte consiste di 4 esercizi, alcuni dei quali hanno lo scopo di accertare le abilità acquisite nel risolvere problemi computazionali tramite la progettazione di algoritmi efficienti, mentre altri mirano a verificare l'acquisizione delle conoscenze previste dal programma del corso. La prova scritta può essere sostituita dal superamento di due prove intermedie, ciascuna delle quali ha una durata di 2 ore e consiste di 3 esercizi, aventi le stesse tipologie degli esercizi della seconda parte della prova scritta. Durante la prova scritta non è ammesso l'uso di libri, appunti, supporti elettronici.

Durante la prova orale lo studente deve dimostrare di conoscere gli argomenti svolti durante il corso e di saperli esporre in modo formale.

Durante l'anno sono svolte 4 esercitazioni in laboratorio che consistono di esercizi in linguaggio C++. Lo scopo è di implementare strutture di dati, tecniche di progettazione e algoritmi visti a lezione e fare esercizio sul calcolo della complessità. Lo svolgimento di tali esercitazioni permette di ottenere un bonus.
Lavagna, tablet ed esercitazioni pratiche in laboratorio
Italiano
scritto e orale
Programma definitivo.
Data ultima modifica programma: 17/05/2022