Alg e Strutture Dat INFBa - Dipartimento di Informatica

INSEGNAMENTO
Algoritmi
e Strutture Dati + Lab
_________________________________________________________
ANNO ACCADEMICO
2013-2014
_________________________________________________________
Informatica triennale sede di Bari
CORSO DI LAUREA IN _________________________________________________________
DOCENTE
Floriana Esposito
_________________________________________________________
ANNO DI CORSO
1°
2°
____________________
SEMESTRE _________________________
7
N° CREDITI LEZIONI FRONTALI: ______________
56
N° ORE LEZIONI FRONTALI: __________________
119
STUDIO INDIVIDUALE (________)
2
N° CREDITI ESERCITAZIONI/LABORATORIO: ______________
20
30 STUDIO INDIVIDUALE (_______)
N° ORE ESERCITAZIONI/LABORATORIO: ________
0
N° CREDITI PROGETTO/CASO DI STUDIO: ______________
0
N° ORE STUDIO INDIVIDUALE (_______)
9
TOTALE CREDITI: ________
PRE-REQUISITI
PRE-REQUISITI:
Principi della programmazione strutturata e conoscenza di almeno un linguaggio
di Programmazione imperativa;
- Principi della programmazione modulare;
- Concetto di tipo, Dati e Strutture dati predefiniti;
- Principi dell'astrazione funzionale (funzioni e procedure) e meccanismi di passaggio dei parametri, compilazione separata;
- Capacità di utilizzare linguaggi algebrici per formulare problemi.
OBIETTIVI FORMATIVI
OBIETTIVI FORMATIVI
Viene presentata una metodologia di progetto basata sull’uso di Dati Astratti (ADT) e sono introdotte tecniche di programmazione
orientata ad oggetti. Saranno acquisiti gli strumenti della programmazione per classi attraverso la realizzazione di dati astratti in
ambienti di programmazione orientati ad oggetti. Oltre alla capacita' di rappresentare in modo formale diversi tipi di problemi,
saranno acquisiti i principi della algoritmica, presentati in funzione del modo di utilizzo dello spazio di ricerca: verranno definite le
caratteristiche dei paradigmi selettivo e generativo e se ne daranno esempi con la presentazione di diversi algoritmi fondamentali.
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 1
Algoritmi e Strutture Dati + Lab 2013-2014
OBIETTIVI PROFESSIONALIZZANTI
OBIETTIVI PROFESSIONALIZZANTI
Capacita' di integrare le tecniche di astrazione funzionale con quelle di
astrazione dati nella progettazione di programmi per la soluzione di un problema,
individuando le strutture dati piu' opportune, il metodo solutivo e la tecnica
algoritmica appropriata. Capacita’ di utilizzare tecniche di realizzazione più efficienti in un linguaggio di programmazione di riferimento,
valutandone i costi ed i benefici in termini di complessita' di calcolo. Capacita’ di implementare diverse realizzazioni degli operatori definiti in
un’opportuna algebra definita per strutture dati non primitive, attraverso l’uso di ADT, in un linguaggio orientato ad oggetti.
_
TESTO/I ADOTTATO/I
A. Bertossi, A. Montresor
Algoritmi e strutture di dati. CittàStudi, 2010
M. Cadoli, M. Lenzerini, P. Naggar, A. Schaerf .
Fondamenti della progettazione dei programmi. Città studi Edizioni, 1997.
TESTO/I CONSIGLIATO/I
C. Demetrescu, I. Finocchi, G. F. Italiano Algoritmi e strutture dati 2/ed Seconda edizione, McGraw-Hill, 2008.
P. Crescenzi, G. Gambosi, R. Grossi.
Strutture di Dati e Algoritmi, Addison-Wesley Pearson, 2/ed 2012
T. Cormen, C. Leiserson, R. Rivest, C. Stein.
Introduzione agli algoritmi e strutture dati. Seconda edizione, McGraw-Hill, 2005.
Clifford A. Shaffer
Data Structures and Algorithm Analysis Edition 3.2 (C++Version) 2012 http://people.cs.vt.edu/~shaffer/Book
PROPEDEUTICITÀ OBBLIGATORIE
Programmazione
PROPEDEUTICITÀ CONSIGLIATE
Linguaggi di programmaione, Matematica Discreta
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 2
Algoritmi e Strutture Dati + Lab 2013-2014
INCENTIVI ALLA FREQUENZA *
Sono previste tre prove intermedie riservate agli studenti che hanno almeno l'80% di
presenze del numero di ore di lezioni effettuate nel periodo precedente ogni prova. La
prima si svolge nel periodo di interruzione delle lezioni a novembre. La seconda si svolge
alla fine delle lezioni, nella seconda metà di dicembre. La terza, di recupero, si svolge
nella seconda settimana di gennaio.
Il superamento di due prove esonera dalla prova d'esame di laboratorio.
ESONERI O PROVE DI VALUTAZIONE INTERMEDIE CON MODALITÀ DI
ESECUZIONE *
Le prove intermedie riguardano l'analisi, la progettazione della strategia solutiva e la
corrispondente realizzazione in C++ di un problema che richieda le strutture dati fino a
quel momento presentate a lezione e durante le ore di esercitazioni guidate in laboratorio.
VALIDITÀ DEI VOTI E PREMIALITÀ ACQUISITE *
La validità dell'esonero è fino alla sessione d'esame di settembre dell'anno accademico in
corso.
MODALITÀ DI ESECUZIONE DEGLI ESAMI *
L''esame consiste di una prova di laboratorio e di una prova orale. La prova di laboratorio,
riguarda l'analisi, la progettazione della strategia solutiva e la corrispondente realizzazione in C+
+ di un problema.
La prova di Laboratorio superata in un appello vale per la sessione d'same e comunque non oltre
90 giorni.
Lo studente è tenuto a presentarsi all'esame orale con gli esercizi/programmi svolti durante
l'anno relativi alla realizzazione di strutture dati e prove di algoritmi.
PROVA SCRITTA
________
NO
PROVA ORALE
________
SI
PROVA DI LABORATORIO
SI
________
PROVA DI PROGETTO O CASO DI STUDIO
NO
________
* Valido solo per gli studenti che sostengono l’esame nell’anno a cui si riferisce il modulo
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 3
Algoritmi e Strutture Dati + Lab 2013-2014
CONTENUTO
1. Algoritmi e programmi
Presentazione del corso. Il ruolo delle tecniche di astrazione nel progetto di
programmi. Dall'algoritmo al programma; la valutazione dell'algoritmo.
2. Algebre di dati
Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Gli ADT (Abtract Data Types):
specifica e realizzazione.
3. Strutture lineari di dati
Il concetto di sequenza. Liste: specifiche, realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile: specifiche e
realizzazioni alternative. Pile e procedure ricorsive. Code: specifiche e realizzazioni alternative. Scelta, implementazione e verifica
di algoritmi per la ricerca, l'ordinamento e la fusione delle strutture dati proposte.
4. Analisi della Complessità di calcolo
Generalità. Tempo di calcolo. Ordini di grandezza e complessità. Modelli di costo per la complessita' in tempo e in spazio.
Definizione delle funzioni di costo.
5. Insiemi
Insiemi: specifiche e confronto tra realizzazioni alternative.
6. Strutture non lineari di dati: alberi
Generalita'. Alberi binari ed n-ari. Gli alberi radicati e alberi ordinati, proprieta'. Alberi binari: specifiche, definizione ricorsiva, la
corrispondenza con le liste, rappresentazioni e realizzazioni. Algoritmi fondamentali di visita. Alberi bilanciati di ricerca.
7. Alberi n-ari
Specifiche, definizione ricorsiva, rappresentazioni e realizzazioni alternative. Algoritmi su alberi n-ari: visita, inserimento di un
valore e ricerca di un valore.
8. Code con priorita'
Generalita'. Specifiche, rappresentazioni e realizzazioni alternative.
9. Dizionari
Tavole indicizzate. Tabelle Hash. Dizionari: algebra e operatori. Rappresentazioni e realizzazioni: Hash statico chiuso e aperto,
Hash dinamico. Scelta di Funzioni hash.
10. Strutture non lineari di dati: Grafi
Il tipo astratto GRAFO: specifiche e rappresentazioni. Realizzazioni mediante matrici di adiacenza e di incidenza, vettori di
adiacenza, liste di adiacenza, e rappresentazioni collegate: realizzazioni alternative. Algoritmi fondamentali su grafi: visita di un
grafo e calcolo dei cammini minimi.
11. Le tecniche algoritmiche
Classificazione dei problemi: problemi di ricerca, di decisione, di ottimizzazione. Lo spazio di ricerca: definizione e proprieta'. Le
tecniche algoritmiche: il paradigma selettivo e il paradigma generativo. Tecnica dell'enumerazione, del backtracking, tecnica
greedy, tecnica divide-et-impera. Problemi e metodi solutivi: string matching (Knuth-Morris-Pratt), partizionamento di insiemi,
problema delle N Regine, problema dello zaino, problema del commesso viaggiatore, problema della colorazione, ricerca del
percorso piu' breve in un grafo (Dijkstra), minimo albero di copertura (Kruskal), selezione di attivita'.
TESTO/I ADOTTATO/I
A. Bertossi, A. Montresor
Algoritmi e strutture di dati. CittàStudi, 2010
M. Cadoli, M. Lenzerini, P. Naggar, A. Schaerf .
Fondamenti della progettazione dei programmi. Città studi Edizioni, 1997.
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 4
Algoritmi e Strutture Dati + Lab 2013-2014
~
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 5
Algoritmi e Strutture Dati + Lab 2013-2014
Campus Via E. Orabona, 4
Tel (+39) 080 5442294; Fax (+39) 080 5443196
[email protected]
Pagina 6