ALGORITMI E STRUTTURE DATI
cod. 07563

Anno accademico 2020/21
1° anno di corso - Secondo semestre
Docente
Federico BERGENTI
Settore scientifico disciplinare
Informatica (INF/01)
Ambito
Discipline informatiche
Tipologia attività formativa
Caratterizzante
72 ore
di attività frontali
9 crediti
sede:
insegnamento
in ITALIANO

Obiettivi formativi

L'obiettivo principale del corso è quello di presentare le principali strutture dati e i relativi algoritmi. Inoltre il corso intende fornire allo studente nozioni relative allo studio della complessità computazionale degli algoritmi. Infine il corso mira anche a fornire allo studente la capacità di applicare tecniche di analisi dei problemi per risolvere semplici problemi pratici in modo algoritmico.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso introduce i concetti relativi alle strutture dati e allo studio di algoritmi corretti ed efficienti. Lo studente acquisisce la capacità di studiare la complessità di algoritmi relativi a problemi di varia natura e la capacità di utilizzare strutture dati che permettano una gestione efficiente delle informazioni.

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Durante il corso verranno affrontanti esercizi e problemi di natura diversa, con particolare riferimento alla realizzazione di programmi che utilizzino le diverse strutture dati studiate e i relativi algoritmi.

Autonomia di giudizio
Gli esercizi proposti relativamente alla parte teorica svolta a lezione possono essere affrontati individualmente o in gruppo e, spesso, possono essere risolti in modi diversi. Il confronto con i compagni di corso e l'ascolto delle soluzioni proposte da altri, nel lavoro a casa o durante gli svolgimenti in aula, favoriscono lo sviluppo di capacità specifiche per poter chiarire le proprie argomentazioni e individuare strutture comuni tra i diversi approcci.

Abilità comunicative
Le discussioni in aula consentono di migliorare le capacità di comunicazione. Tali discussioni riguardano i metodi per risolvere i problemi proposti, evidenziando vantaggi e svantaggi dei diversi approcci proposti. Lo studente impara a lavorare sia in autonomia che in gruppo.

Capacità di apprendimento
Lo studio delle tecniche algoritmiche di base e la loro applicazione a problemi di natura eterogenea contribuiscono a realizzare negli studenti la capacità di apprendere in modo approfondito e non solo superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e meccaniche, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

Prerequisiti


Nozioni di base relative all'analisi matematica e alla programmazione.

Contenuti dell'insegnamento

Durante il corso vengono fornite le nozioni di base degli algoritmi e alle strutture dati, con particolare riferimento allo studio della complessità computazionale degli algoritmi e alla progettazione di algoritmi corretti per le diverse strutture dati.

Programma esteso


Introduzione allo studio degli algoritmi e delle strutture dati

Studio della complessità computazionale degli algoritmi e relative nozioni di base

Algoritmi per array più comuni (es. ricerca e ordinamento)

Algoritmi per liste più comuni (es. ricerca e modifica)

Algoritmi per alberi più comuni (es. ricerca e visita)

Cenni all'analisi della correttezza degli algoritmi

Bibliografia

C. Demestrescu, I. Finocchi, G. F. Italiano. Algoritmi e strutture dati, McGraw Hill, 2008.

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati, McGraw Hill, 2010.

P. Crescenzi, G. Gambosi, R. Grossi. Strutture di Dati e Algoritmi, Pearson, 2006

Metodi didattici


Lezioni frontali svolte in aula.

Modalità verifica apprendimento


L'esame consiste in una prova scritta e in una prova di programmazione. Le due prove devono essere sostenute nello stesso appello. La valutazione finale tiene conto dell'esito di entrambe le prove.

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -