Skip to content

Libera Università di Bolzano

Data Structures & Algorithms

Semestre 1 · 76410 · Corso di laurea in Informatica e Management delle Aziende digitali · 6CFU · IT


- Ricerca e ordinamento
- Analisi degli algoritmi: correttezza e complessità
- Dividere e conquistare, ricorsività
- Puntatori, strutture di dati dinamiche, liste collegate
- Tipi di dati astratti: pile, code, code di priorità, mappe
- Algoritmi elementari a grafo e ad albero

Docenti: Ivan Donadello

Ore didattica frontale: 40
Ore di laboratorio: 20
Obbligo di frequenza: Non è obbligatoria, ma fortemente consigliata. Le lezioni consistono in presentazioni, intervallate da piccoli esercizi e discussioni con gli studenti. L'obiettivo è mettere gli studenti in grado di sviluppare e analizzare algoritmi, un'abilità che può essere acquisita solo con l'allenamento. Gli studenti che non possono seguire tutte le lezioni e i laboratori sono incoraggiati a partecipare almeno ad alcune di esse e a svolgere tutti gli esercizi svolti durante le lezioni e i laboratori.

Argomenti dell'insegnamento
- Ricerca e ordinamento - Analisi degli algoritmi: correttezza e complessità - Divide and conquer, ricorsività - Puntatori, strutture dati dinamiche, liste collegate - Tipi di dati astratti: pile, code, code di priorità, mappe - Algoritmi elementari su grafi e alberi

Modalità di insegnamento
Lezioni frontali e laboratori.

Obiettivi formativi
Il corso appartiene alla tipologia "attività formative di base - informatica di base". Seguendo questo corso, gli studenti saranno in grado di formulare problemi algoritmici e di riconoscere i problemi algoritmici alla base di un'applicazione. Acquisiranno inoltre una conoscenza approfondita delle strutture dati standard e delle corrispondenti tecniche algoritmiche per risolvere tali problemi. Riconosceranno come alcuni approcci algoritmici dipendano dalla scelta di una struttura dati adeguata e viceversa. Inoltre, gli studenti impareranno ad analizzare se un algoritmo è corretto e di quali risorse temporali e spaziali ha bisogno. Infine, gli studenti impareranno a confrontare diversi algoritmi in base alla loro idoneità per una determinata applicazione. Conoscenza e comprensione: - D1.3 - Conoscere i principi di base della programmazione. - D1.6 - Conoscere le strutture dati più importanti e il loro utilizzo nei linguaggi di programmazione. Applicazione della conoscenza e della comprensione: - D2.2 - Capacità di risolvere problemi algoritmici utilizzando metodi di programmazione. Capacità di apprendimento - D5.1 - Capacità di apprendimento per intraprendere ulteriori studi con un alto grado di autonomia.

Obiettivi formativi e risultati di apprendimento (ulteriori info.)
Il corso appartiene alla tipologia "attività formative di base - informatica di base". Seguendo questo corso, gli studenti saranno in grado di formulare problemi algoritmici e di riconoscere i problemi algoritmici alla base di un'applicazione. Acquisiranno inoltre una conoscenza approfondita delle strutture dati standard e delle corrispondenti tecniche algoritmiche per risolvere tali problemi. Riconosceranno come alcuni approcci algoritmici dipendano dalla scelta di una struttura dati adeguata e viceversa. Inoltre, gli studenti impareranno ad analizzare se un algoritmo è corretto e di quali risorse temporali e spaziali ha bisogno. Infine, gli studenti impareranno a confrontare diversi algoritmi in base alla loro idoneità per una determinata applicazione.

Modalità d'esame
La valutazione si basa su un esame finale scritto. L'esame scritto consiste in domande di verifica delle conoscenze, domande che valutano la capacità di applicare le conoscenze acquisite nel corso ed esercizi.

Criteri di valutazione
Non ci sono requisiti per partecipare all'esame finale. Nell'esame scritto, gli studenti devono applicare le tecniche insegnate nel corso in un contesto definito e devono sviluppare algoritmi per nuovi problemi. Gli algoritmi sviluppati devono essere analizzati in termini di correttezza ed efficienza. Le risposte sono valutate in base alla loro correttezza, all'adeguatezza degli algoritmi sviluppati e alla validità e chiarezza dell'analisi.

Bibliografia obbligatoria

Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein (CLRS), seconda o terza edizione

Biblioteca Universitaria: ST 134 C811



Bibliografia facoltativa

Algorithms and Data Structures - The Basic Toolbox, K. Mehlhorn e P. Sanders, scaricabile gratuitamente da

http://www.mpi-inf.mpg.de/~mehlhorn/ftp/Mehlhorn-Sanders-Toolbox.pdf



Altre informazioni
Bibliotecario di soggetto: David Gebhardi, David.Gebhardi@unibz.it Software utilizzato: Compilatore e debugger Java/C


Scarica come PDF

Obiettivi di sviluppo sostenibile
Questa attività didattica contribuisce al raggiungimento dei seguenti Obiettivi di Sviluppo sostenibile.

4

Richiesta info