PROGETTAZIONE DI ALGORITMI

Obiettivi formativi

Obiettivi generali Acquisire la conoscenza di base delle più note tecniche algoritmiche di progettazione e delle tecniche di valutazione della correttezza e della complessità degli algoritmi. Obiettivi specifici Conoscenza e comprensione: Al termine del corso gli studenti posseggono le conoscenze di base relative a: - tecniche fondamentali di progettazione algoritmica; - analisi della correttezza e della efficienza degli algoritmi; Applicazione di conoscenza e comprensione: Al termine del corso gli studenti sono in grado di: - analizzare le prestazioni di un algoritmo tramite strumenti matematici rigorosi; - analizzare algoritmi e strutture dati - progettare ed analizzare nuovi algoritmi, sfruttando le metodologie presentate durante il corso. Autonomia di giudizio: Lo studente alla fine del corso deve essere in grado di scegliere autonomamente qual’è la tecnica algoritmica più adatta da applicare per un determinato problema e valutare tra più soluzioni algoritmiche per un certo problema qual’è da preferirsi. Abilità comunicative: Lo studente acquisirà la capacità di esprimere un’idea algoritmica tramite l’uso di uno pseudocodice. Capacità di apprendimento: Lo studente avrà acquisito la capacità di analizzare un problema, progettare le necessarie strutture dati e un algoritmo corretto ed efficiente che lo risolva.

Canale 1
ANGELO MONTI Scheda docente

Programmi - Frequenza - Esami

Programma
Il corso prosegue il cammino iniziato al primo anno con Introduzione agli algoritmi. Il corso è diviso in tre parti. La prima parte riguarda i grafi e le visite (DFS e BFS). Nella seconda parte di trattano due tecniche di progettazione ( greedy and divide-et-impera) che funzionano bene per particolari tipi di problemi e si parla anche di euristiche come metodo per affrontare problemi particolarmente difficili. Nella terza parte si illustrano la programmazione dinamica e il backtraking, due tecniche potenti e generali. Tutte le tecniche sono illustrate tramite esempi significativi.
Prerequisiti
Una discreta conoscenza dell’inglese è di aiuto.
Testi di riferimento
T.H. Cormen, C.Papadimitriou, U. Vazirani. Introduzione agli algoritmi J. Kleinberg, E. Tardos      Algorithm Design    S. Dasgupta, C. Papadimitriou, U. Vazirani      Algorithms   C. Demetrescu, I. Finocchi, G.F. Italiano Algoritmi e strutture dati
Modalità insegnamento
Il corso si basa su lezioni e dimostrazioni in presenza e su esercizi da svolgere a casa.
Frequenza
la frequenza non è obbligatoria
Modalità di esame
La prova di esame consiste in una prova scritta in cui gli studenti devono risolvere alcuni semplici esercizi. La prova avrà' una durata di 120-150 minuti e comporterà' domande a stimolo chiuso e risposta aperte. Seguirà un orale facoltativo. Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di entrambe le parti del programma. Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso ed essere in grado di raccordarli in modo logico e coerente.
Modalità di erogazione
Il corso si basa su lezioni e dimostrazioni in presenza e su esercizi da svolgere a casa.
  • Codice insegnamento1015888
  • Anno accademico2025/2026
  • CorsoInformatica - erogato in modalità prevalentemente a distanza
  • CurriculumCurriculum unico
  • Anno2º anno
  • Semestre2º semestre
  • SSDINF/01
  • CFU9
  • Ambito disciplinareDiscipline Informatiche