Algoritmi (2020/2021)

Codice insegnamento
4S02709
Crediti
12
Coordinatore
Roberto Posenato
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
ALGORITMI PER BIOINFORMATICA 6 INF/01-INFORMATICA II semestre, I semestre Roberto Posenato
LABORATORIO DI PROGRAMMAZIONE II 6 INF/01-INFORMATICA Vedi pagina del modulo Vedi pagina del modulo

Obiettivi formativi

Obiettivo del corso è fornire le conoscenze di base per il progetto e l'analisi di algoritmi fondamentali con particolare attenzione al loro utilizzo nella soluzione di semplici problemi in bioinformatica. Gli studenti impareranno come implementare semplici soluzioni algoritmiche a problemi in bioinformatica ed alcune strutture dati fondamentali tramite la programmazione orientata agli oggetti. Il corso si compone di due moduli: Algoritmi per Bioinformatica e Laboratorio di Programmazione II, i cui obiet-tivi specifici sono descritti di seguito. Modulo Algoritmi per Bioinformatica: Gli studenti acquisiranno le conoscenze di base per il progetto e l'analisi di algoritmi fondamentali. Impareranno come strutturare un problema in termini algoritmici; come quantificare le risorse computazionali necessarie per l'esecuzione di un algoritmo e quindi comparare diverse soluzioni algoritmiche. In particolare, lo studente che ha seguito il corso con pro-fitto sarà in grado di valutare l'applicabilità e l'efficacia di tecniche di base per la progettazione degli algoritmi a semplici problemi computazionali. Modulo: Laboratorio di Programmazione II: L'obiettivo del modulo è quello di fornire le conoscenze di base per l'implementazione di algoritmi fondamentali tramite la programmazione orientata agli oggetti. Il corso propone Java come linguaggio di riferimento e prevede la produzione assistita di software e l'implementazione di progetti specifici su problemi di interesse bioinformatico. Al termine dell'inse-gnamento lo studente saprà utilizzare le principali strutture dati presenti in Java e realizzare nuove strutture dati utili per l'implementazione di moduli software specifici.

Programma

------------------------
MM: ALGORITMI PER BIOINFORMATICA
------------------------
Definizione di problema computazionale e definizione di algoritmo; Analisi degli algoritmi: caso pessimo e caso medio; Algoritmi e complessità: notazione asintotica; nozioni di base di analisi di complessità; risoluzione di relazioni di ricorrenza; Algoritmi di ricerca, ordinamento e selezione; Strutture dati per l'implementazione della struttura astratta dizionario: code, heap, alberi binari di ricerca, tabelle hash; Tecniche di progettazione: Divide-et-Impera; Greedy; Programmazione dinamica; Grafi e Algoritmi su grafi: visite di grafi; semplici problemi di connettività, ordinamento topologico
------------------------
MM: LABORATORIO DI PROGRAMMAZIONE II
------------------------
La programmazione orientata agli oggetti ed il linguaggio Java. Implementazione di semplici programmi in Java (tipi primitivi e strutture di controllo). Definizione di classi e metodi. Gestione delle eccezioni in Java. Realizzazione di metodi ricorsivi. Interfacce e packages. Implementazione di algoritmi di ordinamento, di ricerca (greedy ed esaustivi) ed algoritmi notevoli su grafi.

Modalità d'esame

C'è un solo esame per entrambi i moduli.
L'esame è volto ad accertare che gli studenti abbiano sufficiente padronanza delle tecniche di base: per la progettazione di algoritmi, degli strumenti per l'analisi del costo computazionale di un algoritmo e della implementazione di algoritmi in Java. L'esame consiste in una prova scritta con quesiti a risposta multipla e aperta. I quesiti a risposta multipla servono per valutare le competenze di base relative all'analisi di algoritmi, alle soluzioni di problemi classici e alla conoscenza del linguaggio Java. I quesiti a risposta aperta verificano la capacità dello studente di modellare un nuovo problema e progettarne una soluzione algoritmica e di saper poi codificare tale soluzione in un programma Java.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Docente del corso Dispense del docente 2020
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Introduzione agli algoritmi e strutture dati (Edizione 3) McGrawHill 2010 978-88-386-6515-8