ALGORITMI E LABORATORIO M - Z
Modulo LABORATORIO

Anno accademico 2022/2023 - Docente: DANIELE FRANCESCO SANTAMARIA

Risultati di apprendimento attesi

Il docente si aspetta che gli studenti siano in grado di implementare, modificare e combinare le strutture dati e gli algoritmi presentati a lezione, nonché di saperli applicare a problemi reali.

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

 ArgomentiRiferimenti testi
1Heap Binario e HeapsortT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
2Ordinamento in tempo lineareT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
3HashingT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
4Alberi rosso-neriT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
5Programmazione dinamicaT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
6Programmazione GreedyT.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati (Terza edizione), The MIT Press, Cambridge - Massachusetts, 2009
7Grafi e algoritmi di cammino minimoT.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