Laboratorio di algoritmi e strutture dati

Titolo insegnamento in inglese: Algorithm and Data Structures Laboratory

Lingua: italiano

Insegnamento: Laboratorio di Algoritmi e Strutture Dati

Anno di corso: II

CFU: 6

Semestre: 2

Docenti:

  • Canale 1: Fabio Mogavero
  • Canale 2: Anna Corazza

Insegnamenti propedeutici previsti

Programmazione, Laboratorio di Programmazione

Obiettivi Formativi

Obiettivo del corso è familiarizzare lo studente con la progettazione e l'implementazione di algoritmi e strutture dati. In particolare si vuole dare allo studente la capacità di produrre codice chiaro, modulare, generale ed efficiente attraverso i seguenti passi: analisi del problema, individuazione di una soluzione generale ed efficiente, stesura del codice, documentazione delle scelte effettuate e del codice prodotto.

Contenuti

Dopo un richiamo alle principali strutture dati di base, si procederà allo studio delle rappresentazioni e implementazioni di tipi di dati astratti quali Liste, Pile, Alberi e una panoramica sui Contenitori. Verrà di seguito affrontate la progettazione di librerie di base per Alberi Binari di Ricerca e Code a Priorità, che siano indipendenti dal tipo dei dati in essi contenuti (strutture dati generiche). Verranno illustrate le loro possibili implementazioni, anche in relazione alle Librerie Standard. Successivamente, si tratterà sistematicamente la rappresentazione e implementazione dei grafi e delle tecniche di visita associate. Verranno, inoltre, introdotti e implementati alcuni algoritmi che operano su grafi pesati, come ad esempio l'algoritmo di Dijkstra, quello di Bellman-Ford e tecniche di visita euristica, in particolare l’algoritmo A*. In questo contesto, l'obiettivo generale è quello di progettare e implementare algoritmi e, più in generale, librerie che operino in maniera il più indpendente possibile dalla struttura dati concreta impiegata.
 

Modalità didattiche

Lezioni frontali. Esercitazioni in laboratorio.

Modalità di esame

L'esame si articola in prova scritta e orale.

La prova si basa su sviluppo progetti.