ALGORITMI E STRUTTURE DATI_DM270 - Dimes

Dipartimento: DIMES
Corso di Laurea: INGEGNERIA INFORMATICA
Indirizzo Internet Corso di Laurea: www.dimes.unical.it
Nome insegnamento: ALGORITMI E STRUTTURE DATI
Condivisione: nessuna
Articolazione in moduli: No
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile: SERGIO FLESCA
Posizione docente responsabile:
PROFESSORE ASSOCIATO – UNIV. DELLA CALABRIA
Crediti formativi universitari: 6
Numero ore lezioni: 36
Numero ore riservate attività didattiche assistite: 57
Numero ore esercitazioni: 21
Numero ore riservate studio individuale: 93
Tipologia: ATTIVITA’ CARATTERIZZANTE DELLA CLASSE (INGEGNERIA INFORMATICA)
Lingua di insegnamento: ITALIANO
Collocazione: II ANNO, I SEMESTRE
Prerequisiti: FONDAMENTI DI INFORMATICA
Obiettivi formativi (risultati d’apprendimento previsti e competenze da acquisire – Descrittori di Dublino):
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.
9. BACKTRACKING e cenni alle classi di complessità di problemi decisionali.
Argomenti delle esercitazioni:
Progettazione e implementazione di strutture dati e algoritmi
Modalità di frequenza: OBBLIGATORIA
Modalità di svolgimento delle lezioni:
Lezioni frontali in aula, con metodologie tradizionali e proiettore collegato al PC.
Modalità di svolgimento delle esercitazioni:
In aula, con metodologie tradizionali e proiettore collegato al PC.
Metodi di valutazione:
Prova scritta e prova orale obbligatoria.
Testi di riferimento:
Algoritmi e Strutture dati 2° Edizione
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
McGraw-Hill
Orario e aule lezioni:
Calendario prove valutazione:
www.dimes.unical.it