Search Google Appliance

Algoritmi e strutture dati

  • Edizioni precedenti del corso A.A.:
  • 2018/2019

Dati insegnamento


Lingua Insegnamento:
Italiano 
Testi di riferimento:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduzione agli algoritmi e strutture dati (terza edizione), McGrawHill, ISBN 9788838665158 
Obiettivi formativi:
L’obiettivo formativo per lo studente è che raggiunga i seguenti risultati di apprendimento:

*Conoscenza e capacità di comprensione*
Il corso intende fornire le conoscenze metodologiche e applicative relative all’analisi e alla progettazione di algoritmi ottimali e strutture dati efficienti. Vengono in particolare studiate diverse tecniche di progettazione di algoritmi come la tecnica del divide et impera, la programmazione dinamica e la programmazione greedy; vengono altresì presentate le strutture dati fondamentali quali liste, code, pile, alberi binari di ricerca, tabelle hash, heap, grafi (con relativi algoritmi fondamentali).

*Capacità di applicare conoscenza e comprensione*
Al termine del corso di insegnamento, lo studente anche con l’aiuto di casi di studio concreti svolti in laboratorio, sarà in grado di analizzare e sviluppare algoritmi per la risoluzione di problemi fondamentali. 
Prerequisiti:
nessuno 
Metodi didattici:
Lezioni, esercitazioni 
Modalità di verifica dell'apprendimento:
*Conoscenza e capacità di comprensione*
La verifica dei risultati di apprendimento sarà effettuata tramite una o più prove scritte ed un colloquio finale (quest’ultimo è facoltativo e/o a discrezione del docente).
La valutazione finale, espressa in trentesimi, tiene conto sia delle prove scritte preliminari che del colloquio di esame.

*Capacità di applicare conoscenza e comprensione*
Durante le prove d’esame si verifica la capacità degli studenti di applicare le conoscenze fornite dal corso al fine di essere in grado di analizzare e progettare strutture dati ed algoritmi efficienti. 
Altre Informazioni:
E-mail del docente: luca.moscardelli@unich.it
Giorni ed orario di ricevimento studenti: controllare la pagina del docente su cleii.unich.it 

Il corso di Algoritmi e strutture dati introduce gli studenti all’analisi e alla progettazione di algoritmi ottimali e strutture dati efficienti. Vengono in particolare studiate diverse tecniche di progettazione di algoritmi come la tecnica del divide et impera, la programmazione dinamica e la programmazione greedy; vengono altresì presentate le strutture dati fondamentali quali liste, code, pile, alberi binari di ricerca, tabelle hash, heap, grafi (con relativi algoritmi fondamentali).


• Introduzione; Notazione asintotica; Tecnica del divide et impera e metodi di risoluzione delle ricorrenze.
• Algoritmi di ordinamento e loro analisi: algoritmi quadratici; merge sort; quick sort; limite inferiore ad algoritmi basati su confronti; counting sort e radix sort.
• Strutture dati elementari e operazioni: liste, pile, alberi radicati.
• Strutture dati: alberi binari di ricerca, tabelle Hash, Heap; heapsort.
• Tecniche di progettazione algoritmica: programmazione dinamica e algoritmi greedy
• Grafi: rappresentazione; visite; minimo albero ricoprente (Kruskal e Prim); cammini minimi (Dijkstra e Floyd-Warshall)