Laboratorio di Algoritmi e Strutture Dati


  • Il corso inizierà dopo il 16 Ottobre 2017. Il docente del laboratorio verrà nominato dopo tale data. Su questo wiki verrà indicata la data di inizio.
  • Gli studenti degli anni accademici precedenti possono ancora fare l'esame con il docente Luca Tesei negli appelli già fissati a Febbraio 2018. La pagina di riferimento si trova a questo link.

Docente:

  • Da nominare

Orario delle Lezioni:

  • Tutti i lunedì dalle 16 alle 18 e tutti i giovedì dalle 09 alle 11 in aula LA1 del Polo Lodovici, via Madonna delle Carceri 9, Camerino.

Ricevimento studenti:

  • Verrà comunicato dal docente.

Acronimo ufficiale del corso:

  • ASDL1718

Gli obiettivi indicati sono quelli del corso intero, comprensivo della parte teorica e della parte di laboratorio.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE

Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  • Comprendere la nozione di complessità computazionale di un algoritmo in tempo e in spazio
  • Illustrare le principali tecniche di progettazione di algoritmi
  • Conoscere le strutture dati di base e le principali strutture dati evolute per risolvere problemi specifici di ricerca e rappresentazione di strutture complesse

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE

Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  • Applicare le principali tecniche di progettazione di algoritmi
  • Classificare ed analizzare gli algoritmi in base alla loro complessità computazionale
  • Ideare e implementare algoritmi per risolvere problemi specifici utilizzando le tecniche e le strutture dati conosciute

AUTONOMIA DI GIUDIZIO

Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  • Scegliere (ed implementare) le strutture dati più adatte alla risoluzione di un dato problema realizzando opportuni compromessi tra esigenze conflittuali come costo, semplicità ed efficienza.

ABILITÀ COMUNICATIVE

Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  • Produrre una relazione dettagliata sull’ideazione e l’implementazione di un progetto
  • Avere la capacità di lavorare in gruppo per la realizzazione di un progetto

CAPACITÀ DI APPRENDIMENTO

Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di:

  • Ricercare, comprendere e implementare algoritmi e strutture dati esistenti, ma non trattati nel corso, per la risoluzione di problemi specifici

La parte di laboratorio verterà sui seguenti contenuti:

  • Richiami di Java e programmazione orientata agli oggetti, ereditarietà e polimorfismo, uguaglianza e ordinamento fra gli elementi di una classe
  • Tipi generici e Collections
  • Implementazione di tipi di dato astratto tramite tipi generici e interfacce di specifica: liste, pile, code, insiemi
  • Implementazione di diversi algoritmi di ordinamento generici, realizzazione di un benchmark per la valutazione numerica della loro complessità computazionale e per la loro comparazione
  • Implementazione di algoritmi su strutture dati dinamiche: alberi bilanciati, alberi binari di ricerca
  • Rappresentazione di grafi e alberi, implementazione di visite e altri algoritmi su grafi e alberi

Slides e altro materiale

Testi di Riferimento

  • T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli Algoritmi e Strutture Dati, McGraw-Hill, 2005, Sito Web

Testi di Approfondimento

  • C. Toffalori, F. Corradini, S. Leonesi, S. Mancini, Teoria della computabilità e della complessità, McGraw-Hill, 2005, Sito Web



Date Esami A.A. 2017/2018