11929 - ALGORITMI E STRUTTURE DATI

Anno Accademico 2024/2025

  • Docente: Roberto Casadei
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Italiano
  • Moduli: Roberto Casadei (Modulo 1) Vittorio Maniezzo (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Cesena
  • Corso: Laurea in Tecnologie dei sistemi informatici (cod. 6007)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente conosce le strutture dati di base e gli algoritmi in grado di operare su di esse. Lo studente conosce le principali tecniche per la stima del costo computazionale di algoritmi, ed è in grado di progettare e realizzare soluzioni efficienti per risolvere problemi comuni nell'ambito delle discipline legate alla tecnologia dell'informazione.

Contenuti

Il corso consiste di due moduli, uno propriamente di introduzione agli algoritmi e strutture dati e il secondo di introduzione al linguaggio Python. Gli algoritmi e le strutture dati di interesse saranno presentati con un linguaggio astratto (pseudocodice) indipendente da dettagli sintattici e nelle esercitazioni verranno poi tradotti con riferimento principalmente al linguaggio C. Il linguaggio Python offrirà un'altra prospettiva, utile sia in questo corso e soprattutto in altri corsi successivi.

Gli argomenti trattati durante il corso includono:

  • concetti di algoritmi ed efficienza/complessità
  • analisi e notazione asintotica della complessità (O-grande)
  • algoritmi ricorsivi e metodologia divide-et-impera
  • algoritmi di ricerca
  • algoritmi di ordinamento
  • strutture dati elementari: pile, code, liste
  • tabelle hash
  • grafi e algoritmi di visita su grafi
  • alberi binari di ricerca

 

Testi/Bibliografia

  • Introduzione agli algoritmi e strutture dati. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. McGraw-Hill Education, 2010
  • Algoritmi e strutture dati - Astrazione, progetto e realizzazione. Pasquale Foggia, Mario Vento. McGraw-Hill, 2011

Metodi didattici

  • Lezioni frontali
  • Esercitazioni in laboratorio

Modalità di verifica e valutazione dell'apprendimento

L'esame consisterà in due parti

  1. un piccolo progetto (esercizio) relativo al modulo Python, che costituirà criterio di ammissione allo scritto, e
  2. in una prova scritta/pratica contenente domande relative agli aspetti teorici ed esercizi pratici di implementazione di algoritmi/strutture dati (in C e/o Python).

Strumenti a supporto della didattica

  • Dispense a cura dei docenti
  • Esercitazioni (con soluzioni) 

Orario di ricevimento

Consulta il sito web di Roberto Casadei

Consulta il sito web di Vittorio Maniezzo