Azione delle onde sui litorali - Università degli Studi Mediterranea

Nome insegnamento: Algoritmi e Strutture Dati
Dipartimento:
Corso di laurea:
Classe:
Tipo Attività formativa:
Ambito disciplinare:
Settore Scientifico-Disciplinare:
Numero di Crediti Formativi
Universitari:
Propedeuticità obbligatoria:
Anno di corso:
Semestre:
Ore di insegnamento:
Modalità di esame:
DIIES
Ingegneria dell’Informazione
L-8
caratterizzante
ING. INFORMATICA
ING-INF/05
6
Fondamenti di Informatica
II
I
48
prova scritta e prova orale
TITOLARE DEL CORSO
Prof. Francesco Buccafurri
Obiettivi formativi
Comprensione e assimilazione del concetto di tipo di dato astratto come strumento di
rappresentazione della realtà nonché dei principali algoritmi, con particolare riguardo agli
algoritmi su grafi (ed alle applicazioni alle reti di computer), delle principali tecniche di
programmazione e dell'analisi di complessità degli algoritmi. Capacità di applicare i
concetti teorici assimilati nella risoluzione di problemi e opportuni casi d’uso. Acquisizione
di un appropriato livello di autonomia nell’apprendimento delle tecniche di progetto di
algoritmi e di implementazione che seguono il paradigma object-oriented. Capacità di
comunicare con adeguata competenza tecnica con altri partner in attività di gruppo di
implementazione su larga scala. Capacità di apprendimento di nuove tecniche di
programmazione e strutture dati più avanzate nonché di diversi linguaggi che seguono il
paradigma object-oriented.
Programma dettagliato
Introduzione
Problemi e algoritmi
Cenni sulla nozione di Calcolabilita’ e sulla tesi di Church-Turing.
Complessità computazionale di problemi ed algoritmi (notazione O, Omega, Theta)
Tipi di Dato e Strutture Dati
Vettori, Matrici, Liste,Liste Ordinate, Pile, Code, Heap, Alberi Binari di Ricerca, Alberi
Generali, Code di Priorita', Insiemi, Dizionari, Tabelle Hash, Vettori Associativi, Grafi
Orientati e Non Orientati, Grafi Pesati, Trie.
Algoritmi Fondamentali, Tecniche di Programmazione e Algoritmi su Grafi
Algoritmi di Base su Grafi (Raggiungibilita' di nodi in un grafo, Componenti Connesse,
Albero Ricoprente)
Tecniche di Ricerca e di Ordinamento
Divide et Impera (approf: Ricerca Binaria, Merge Sort, Tecniche Quadratiche di
Ordinamento, Calcolo del Fattoriale, Calcolo della Successione di Fibonacci)
Equazione di Ricorrenza per la definizione della complessita’ delle tecniche Divide et
Impera.
Tecniche Golose (Knapsack, Algoritmo di Dijkstra, Algoritmo di Prim, Implementazione
con vettori e con heap indicizzato, cenni all’Algoritmo di Huffman per compressione
lossless).
Esempi di Applicazione alle Reti di Computer degli Algoritmi su Grafi (routing,
connettivita’,
etc.).
Programmazione OO in Java
Caratteristiche OO di Java (Incapsulamento, Ereditarietà, Polimorfismo, Template)
Implementazione delle strutture dati e degli algoritmi studiati in Java.
Testi consigliati
Camil Demetrescu, Umberto Ferraro Petrillo, Irene Finocchi, Giuseppe F. Italiano,
Progetto di algoritmi e strutture dati in Java, McGraw-Hill.
Cormen-Leiserson-Rivest: Introduzione agli algoritmi e strutture dati 2a ediz.,
McGrawHill.
Ausiello, et al., Teoria e Progetto di Algoritmi Fondamentali, Franco Angeli.
A.A., Bertossi, Strutture, Algoritmi, Complessita', ECIG, Universita' di Pisa.
Cay Horstmann, Concetti di informatica e fondamenti di Java, Apogeo.
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati
2/ed, McGraw-Hill.