Lezioni frontali saranno dedicate all'implementazione in tempo reale degli algoritmi e delle strutture dati presentati nel modulo teorico. Qualora l'insegnamento venisse impartito in modalità mista o a distanza, potranno essere introdotte le necessarie variazioni al fine di rispettare il programma previsto e riportato nel syllabus. La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Il corso presuppone una buona conoscenza di Elementi di Matematica Discreta e di Analisi Matematica. Inoltre lo studente deve conoscere i paradigmi base di programmazione e delle principali strutture dati. La conoscenza del linguaggio di programmazione ad oggetti C++ è un prerequisito fondamentale.
La frequenza è fortemente consigliata.
Il modulo di Laboratorio di Algoritmi ha lo scopo di fornire gli strumenti per l'implementazione degli algoritmi e delle strutture dati trattate nel corso di Algoritmi, attraverso l'utilizzo della programmazione ad oggetti. Il linguaggio C++ verrà usato come strumento principale per presentare le implementazioni delle strutture dati e degli algoritmi.
T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduction to algorithms (Third Edition), The MIT Press, Cambridge - Massachusetts, 2009. La versione in lingua originale è obbligatoria.
| Argomenti | Riferimenti testi | |
|---|---|---|
| 1 | Heap Binario e Heapsort | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 2 | Ordinamento in tempo lineare | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 3 | Hashing | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 4 | Alberi rosso-neri | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 5 | Programmazione dinamica | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 6 | Programmazione Greedy | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
| 7 | Grafi e algoritmi di cammino minimo | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009 |
L'esame consiste nell'implementazione in C++ di una o più strutture dati e/o algoritmi presentati e analizzati a lezione. Al termine della prova lo studente riceverà una delle due seguenti valutazioni: "prova superata", "prova non superata". La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Gli esercizi di programmazione possono essere o i medesimi che gli studenti troveranno all'interno del Sistema di Esercitazione o realizzati ex-novo dal docente