ALGORITMI E STRUTTURE DATI - MOD.1
- Anno accademico
- 2020/2021 Programmi anni precedenti
- Titolo corso in inglese
- ALGORITHMS AND DATA STRUCTURES - PART 1
- Codice insegnamento
- CT0371 (AF:306319 AR:166740)
- Lingua di insegnamento
- Italiano
- Modalità
- In presenza
- Crediti formativi universitari
- 6 su 12 di ALGORITMI E STRUTTURE DATI
- Livello laurea
- Laurea
- Settore scientifico disciplinare
- INF/01
- Periodo
- Annuale
- Anno corso
- 2
- Sede
- VENEZIA
- Spazio Moodle
- Link allo spazio del corso
Inquadramento dell'insegnamento nel percorso del corso di studio
Risultati di apprendimento attesi
- conoscenza e comprensione dei principali algoritmi e strutture dati;
- comprensione e valutazione della complessità dei problemi informatici e capacità di selezionare metodi adeguati per la modellazione e risoluzione del problema.
Capacità di applicare conoscenza e comprensione:
- capacità logico-deduttive e di problem solving;
- capacità di formalizzare e implementare soluzioni per problemi reali e identificazione di pattern di soluzione appropriati;
Capacità di giudizio
- Sapere formulare ed argomentare soluzioni, sviluppando anche un approccio critico alla valutazione di soluzioni alternative.
Prerequisiti
Contenuti
Tecniche fondamentali per il progetto di algoritmi: Tecnica divide et impera. Programmazione dinamica. Algoritmi golosi (o greedy).
Algoritmi su grafi: Rappresentazione di grafi. Visite in ampiezza e in profondita. Alberi di copertura minimi (Kruskal e Prim). Cammini minimi (Dijkstra, Bellman-Ford, Floyd-Warshall).
Problemi NP-completi: Classi di complessita P e NP. Riducibilita polinomiale e NP-completezza. Esempi di problemi NP-completi.
Testi di riferimento
Introduction to algorithms (3rd Edition), MIT Press, 2009.
(Traduzione italiana a cura di Livio Colussi edita da McGraw-Hill, Milano, 2010.)
C. Demetrescu, I. Finocchi, G. F. Italiano.
Algoritmi e strutture dati (seconda edizione), McGraw-Hill, 2008.
Modalità di verifica dell'apprendimento
Durante la prova orale lo studente deve dimostrare di conoscere gli argomenti svolti durante il corso e di saperli esporre in modo formale.
Durante l'anno sono svolte 4 esercitazioni in laboratorio che consistono di esercizi in linguaggio C. Lo scopo è di implementare strutture di dati, tecniche di progettazione e algoritmi visti a lezione e fare esercizio sul calcolo della complessità. Lo svolgimento di tali esercitazioni permette di ottenere un bonus.