Nome insegnamento: ALGORITMI, STRUTTURE DATI
Articolazione in moduli: NO
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile:
FLESCA SERGIO
Crediti formativi universitari: 6
Numero ore lezioni: 36
Numero ore riservate attività didattiche assistite: 57 Numero ore esercitazioni: 21
Numero ore attività di laboratorio: 0
Tipologia di attività formativa (TAF): CARATTERIZZANTE
Lingua di insegnamento: Italiano
Anno di corso e Periodo didattico di erogazione: II ANNO, I SEMESTRE
Insegnamento/i Propedeutico/i: FONDAMENTI DI INFORMATICA
Risultati d’apprendimento previsti e competenze da acquisire:
Il corso è finalizzato ad acquisire e sperimentare le tecniche di base per la valutazione della complessità
di problemi e algoritmi e per la progettazione e realizzazione di strutture dati e algoritmi. La realizzazione
degli algoritmi e delle strutture dati seguirà i principi della programmazione orientata agli oggetti e verrà
utilizzato il linguaggio Java.
Competenze da acquisire:




comprensione dei concetti legati alla complessità dei problemi e degli algoritmi
abilità ad impostare la risoluzione di problemi mediante algoritmi e valutare l’efficienza degli
algoritmi realizzati
abilità di verificare e dimostrare la correttezza di un algoritmo
abilità di utilizzare strutture dati ed algoritmi noti in letteratura per la risoluzione di problemi
Argomenti delle lezioni:
1. COMPLESSITÀ DI PROBLEMI E ALGORITMI:
Modelli di computazione (macchina di Turing, macchine RAM e RASP), analisi di complessità
(temporale e spaziale) di algoritmi e problemi, funzioni di costo, notazione di rappresentazione delle
funzioni di costo, casi possibili (medio, peggiore e migliore).
2. RICHIAMO DI ALGORITMI FONDAMENTALI: algoritmi di ordinamento e di ricerca iterativi, algoritmi su
matrici e risoluzione di sistemi di equazioni. Analisi di complessità.
3. RICORSIONE E ALGORITMI DI TIPO DIVIDE ET IMPERA: La tecnica Divide et Impera e calcolo di
complessità. Moltiplicazione efficiente di interi e di matrici. Algoritmi efficienti di ricerca e
ordinamento. Algoritmi efficienti per il calcolo del k-mo maggiore. Ricorsione e tecnica divide et
impera. Divide et Impera senza ricorsione.
4. ALBERI: Alberi binari, algoritmi di visita e progetto di iteratori. Alberi binari di ricerca: ricerca e
bilanciamento. Alberi generali. B-Alberi.
5. DIZIONARI E CODE DI PRIORITÀ: Dizionari, vettori associativi, tabelle hash, code di priorità, heap, e
loro applicazioni.
6. STRINGHE: definizioni preliminari, distanza fra stringhe, massima sottosequenza comune, string
matching.
7. GRAFI: Proprietà e realizzazioni. Algoritmi di visita, alberi ricoprenti componenti connesse, ciclicità,
chiusura transitiva, componenti fortemente connesse.
8. GRAFI PESATI: La rappresentazione di grafi pesati. Minimi alberi ricoprenti e distanze minime da un
nodo sorgente e loro computazione con tecniche golose. Calcolo delle distanze minime con tecniche
di programmazione dinamica.
BACKTRACKING e cenni alle classi di complessità di problemi decisionali.
Argomenti delle esercitazioni:
Progettazione e implementazione di strutture dati e algoritmi
Modalità di erogazione della didattica:
lezioni frontali
Metodi di valutazione:
esame scritto e orale
Criteri di valutazione dell’apprendimento:
Ci si aspetta che lo studente abbia acquisito le seguenti abilità:
1. Comprendere i concetti legati alla complessità dei problemi e degli algoritmi
2. Impostare la risoluzione di problemi mediante algoritmi e valutare l’efficienza degli algoritmi
realizzati
3. Verificare e dimostrare la correttezza di un algoritmo
4. Utilizzare strutture dati ed algoritmi noti in letteratura per la risoluzione di problemi
Criteri di misurazione dell’apprendimento:
voto finale
Criteri di attribuzione del voto finale:
Il voto finale è attribuito valutando le abilità conseguite dallo studente
Testi di riferimento e materiale didattico utilizzato e consigliato:
Algoritmi e Strutture dati 2° Edizione
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
McGraw-Hill
Orario e aule lezioni:
Calendario prove valutazione:
http://www.dimes.unical.it/index.php/didattica