SILLABO
-
Modulo Algoritmi e Strutture Dati
- Analisi della complessità di un algoritmo
- Algoritmi di ordinamento (insertion-sort, selection-sort, merge-sort).
- Code di priorità. heap binari, heap binomiali, heap-sort.
- Il problema del dizionario: ricerca, inserimento, cancellazione. Gestione di dizionari: alberi AVL, tabelle hash.
- Grafi: rappresentazioni, algoritmi di visita e connessione.
- Algoritmi elementari su grafi: cammino minimo, minimo albero ricoprente.
Modulo Laboratorio di Algoritmi e Strutture Dati
- Il Linguaggio Java: richiami sui concetti fondamentali; interfacce e classi astratte; Generics; classi e interfacce del Java Collection Framework.
- Strutture dati elementari e loro implementazione in Java: liste, stack e code. Implementazione delle liste mediante array e liste collegate semplici. Uso delle classi standard (client code perspective).
- Algoritmi di ricerca ed ordinamento e loro implementazione in Java: ricerca sequenziale e binaria; bubble-sort, insertion-sort, selection-sort, merge-sort, quick-sort.
- Strutture dati avanzate e loro implementazione in Java: alberi binari, visite BFS e DFS; alberi binari di ricerca (BST), BST bilanciati, alberi red-black, strutture dati union-find.
- Code con priorità e loro implementazione in Java: heap binari, code con priorità implementate mediante heap binari; algoritmo di ordinamento basato sulle code con priorità, implementazione Java dell’algoritmo heap-sort.
- Grafi: rappresentazione dei modelli di grafo orientato/non orientato ed etichettato/non etichettato; implementazione in Java delle visite BFS e DFS; implementazione in Java dei classici algoritmi per i problemi della ricerca del cammino minimo da sorgente singola e della ricerca del minimo albero ricoprente.