LABORATORIO DI ALGORITMI E STRUTTURE DATI
cod. 15397

Anno accademico 2024/25
2° anno di corso - Secondo semestre
Docente
Alessandro DAL PALU'
Settore scientifico disciplinare
Informatica (INF/01)
Ambito
Discipline informatiche
Tipologia attività formativa
Caratterizzante
48 ore
di attività frontali
6 crediti
sede:
insegnamento
in ITALIANO

Obiettivi formativi

Il corso approfondisce gli algoritmi e strutture dati introdotti nel corso omonimo e prevede l'implementazione guidata degli aspetti algoritmici.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso richiama le conoscenze acquisite e pone lo studente di fronte alla comprensione delle stesse, nel momento della progettazione e implementazione pratica degli algoritmi e strutture dati
Il testo di riferimento è in italiano (esiste anche la versione inglese). Viene altresì utilizzata durante le lezioni la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche acquisite nel corso di algoritmi e strutture dati vengono utilizzate per realizzare autonomamente implementazioni di casi pratici di uso. Le esercitazioni, parte fondamentale del corso, sono incentrate sulla risoluzione di esercizi e problemi. I metodi risolutivi vengono presentati sotto forma algoritmica, sviluppando negli studenti la capacità di strutturare e adattare algoritmi noti agli scopi specifici.

Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono essere risolti individualmente o in piccoli gruppi. Il confronto con i compagni di corso, nel lavoro a casa o durante gli svolgimenti in aula, favorisce lo sviluppo di capacità specifiche per poter a chiarire ai compagni o ai docenti le proprie argomentazioni. Spesso gli esercizi proposti possono essere risolti in modi molto diversi e l'ascolto delle soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni, al di là delle apparenti differenze superficiali.

Abilità comunicative
Le discussioni sui diversi metodi per risolvere i problemi proposti durante gli esercizi di laboratorio consentono di migliorare le capacità di comunicazione. Vengono inoltre abitualmente utilizzate durante le spiegazioni (ed esplicitamente evidenziate in classe) alcune modalità di comunicazione specifiche della tecnologia informatica.

Capacità di apprendimento
La presentazione degli algoritmi e strutture dati e la loro implementazione in un linguaggio ad alto livello non ad oggetti, permette di confrontarsi con i concetti base degli algoritmi e strutture dati, in particolare: la progettazione di una struttura dati, la comprensione profonda degli algoritmi classici dell'informatica e la progettazione di varianti, la comprensione della complessita' computaizonale. Le conoscenze così acquisite non sono mai rigide e definitive, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

Prerequisiti

Algoritmi e strutture dati, Fondamenti di programmazione A+B

Contenuti dell'insegnamento

Il corso riprende le nozioni di base presentate nel corso di Algoritmi e strutture dati e propone l'applicazione delle parti teoriche in casi pratici. In particolare, sono implementati in forma assistita o autonoma gli algoritmi classici di ordinamento e ricerca. Inoltre sono proposti algoritmi su grafi da analizzare, implementare e valutare. Il corso da' la possibilita' di fare esperienza del comportamento effettivo degli algoritmi rispetto alle loro misure di complessita' computazionale.

Programma esteso

Algoritmi di sorting

Algoritmi di ricerca su strutture ordinate.

Heap

Grafi e algoritmi classici (shortest path, cut etc)

Programmazione dinamica

Bibliografia

Cormen. Introduzione agli algoritmi e strutture dati

Metodi didattici

lezioni frontali e prove di laboratorio

Modalità verifica apprendimento

Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato gi algoritmi e le strutture dati. Saper implementare un algoritmo a partire dallo pseudocodice. Comprendere e modificare il funzionamento di un algoritmo di base. Conoscere il funzionamento di un algoritmo contenuto nelle librerie standard. Conoscere il comportamento di un algoritmo e la sua complessita' computazionale.

Modalità di verifica/esame
L'esame consiste in una prova orale a cui si accede solo alla consegna di tutte le relazioni previste durante il corso. E' possibile sostenere più volte la prova orale. La prova orale approfondisce i programmi consegnati e valuta i risultati di apprendimento tramite domande critiche sui programmi e risultati ottenuti.

Altre informazioni

Obiettivi agenda 2030 per lo sviluppo sostenibile