Laboratorio di Algoritmi e Strutture Dati - AA 2019/20
Corso di laurea in informatica


logo università milano

Laboratorio di Algoritmi e Strutture Dati - AA 2019/20

È online il sito relativo all'edizione del laboratorio per l'anno accademico 20/21.

Queste pagine si riferisono all'anno accademico 2019/20.

Docente: Violetta lonati

Il corso Algoritmi e strutture dati / laboratorio è rivolto agli studenti del secondo anno del corso di laurea in informatica ed ha l'obiettivo di presentare le strutture dati e gli algoritmi di base a diversi livelli di astrazione, nonchè consentire l'acquisizione delle principali metodologie di progettazione e analisi degli algoritmi. Il corso si compone di due moduli svolti in parallelo:

  • modulo Algoritmi e strutture dati
  • modulo Laboratorio di algoritmi e strutture dati

Questa pagina descrive solo il modulo di laboratorio per l'edizione, mentre il modulo di teoria è tenuto dal Prof. Giovanni Pighizzini ed ha una sua propria pagina web.

L'obiettivo specifico del Laboratorio è di familiarizzare con le tecniche algoritmiche attraverso l'implementazione concreta di algoritmi in un linguaggio di programmazione reale. Il linguaggio scelto è il C, ma è importante sottolineare che non si tratta di un corso sul linguaggio C, né tanto meno di un corso di programmazione; si assume infatti che gli studenti abbiano già familiarità con i concetti fondamentali della programmazione e conoscano almeno un linguaggio.

Risultati di apprendimento attesi. Lo studente:

  • conosce il linguaggio di programmazione C e in particolare gli aspetti legati all'uso dei puntatori e alla gestione della memoria;
  • conosce le strutture dati fondamentali (liste, alberi, grafi, code, pile, ecc) e le principali tecniche algoritmiche (ricorsione, divide-et-impera, strategie greedy, programmazione dinamica);
  • comprende e sa modificare programmi in C che implementano e manipolano strutture dati fondamentali;
  • sa usare le strutture dati fondamentali per descrivere e modellare problemi realistici;
  • sa progettare e implementare in C algoritmi che risolvono probemi realistici, applicando e adattando tecniche e algoritmi noti.