ALGORITMI E LABORATORIO M - ZModulo LABORATORIO
Anno accademico 2022/2023 - Docente: DANIELE FRANCESCO SANTAMARIARisultati di apprendimento attesi
Modalità di svolgimento dell'insegnamento
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.
Prerequisiti richiesti
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.
Frequenza lezioni
La frequenza è fortemente consigliata.
Contenuti del corso
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.
Testi di riferimento
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.
Programmazione del corso
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 |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
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.
Esempi di domande e/o esercizi frequenti
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