Algoritmi e strutture dati - Università degli Studi dell`Insubria

Algoritmi e Strutture Dati
Corso di Laurea Triennale in Informatica F004
A.A. 2013/14
SCV0017
Docente: Paolo Massazza
CFU
SSD
LEZIONI
ANNO
LINGUA
9
INF/01
72
I
Italiano
Obiettivi dell’insegnamento e risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Il corso fornisce le conoscenze di base relative alle principali strutture dati e ai principali algoritmi associati. Vengono acquisite le tecniche di base per la
progettazione e l'analisi degli algoritmi, insieme alla capacità di sviluppare programmi software per i più classici problemi legati all’elaborazione dei dati
Conoscenza e capacità di comprensione applicate
Acquisizione delle capacità di trasferimento delle conoscenze dagli ambiti teorici e metodologici a quelli più generalmente professionali, con possibilità di operare e
di affrontare problematiche applicative inerenti alle specifiche tematiche studiate.
Autonomia di giudizio e abilità comunicative
I risultati di apprendimento attesi comprendono la capacità di saper individuare gli algoritmi e le strutture dati di base più indicate in un dato contesto, acquisendo
al tempo stesso una proprietà di linguaggio tale da poter formalizzare un problema in modo idoneo a una sua trattazione informatica.
Capacità di apprendere
La conoscenza delle tecniche di base inerenti il mondo degli algoritmi e delle strutture di dati permette l’acquisizione di adeguate capacità per l'approfondimento
delle proprie conoscenze e per lo sviluppo individuale di nuove competenze.
Prerequisiti
Viene richiesta la conoscenza di un linguaggio di programmazione di tipo procedurale, meglio se corredata da elementi di base relativi all’architettura di un
elaboratore.
Contenuti e programma del corso
Formalizzazione dei problemi, complessità degli algoritmi, notazioni asintotiche (6h)
Modelli di calcolo (RAM, RASP) e criteri di costo (6h)
Caratteristiche dei linguaggi procedurali (2h)
Strutture dati elementari (vettori, matrici, liste, pile, code) (6h)
Grafi e alberi, rappresentazioni e algoritmi di visita (10h)
Il problema dell’ordinamento: aspetti generali e algoritmi elementari (4h).
Tecnica di progettazione Divide et Impera (2h)
Ordinamento digitale e algoritmi d’ordinamento avanzati (6h)
Heap e Heapsort (2h)
Tabelle hash (4h)
Alberi binari di ricerca (6h)
Alberi bilanciati (2-3, 2-3-4, red-black) (8h)
Operazioni su partizioni (Union e Find) (2h)
Problemi di ottimizzazione (4h)
Programmazione dinamica (4h)
Tipologia delle attività didattiche
Lezioni frontali (72h)
Testi e materiale didattico
A scelta tra:
R. Sedgewick, Algoritmi in Java (3ed.), Pearson Education Italia.
R. Sedgewick, K. Wayne, Algorithms, 4th Edition, Addison-Wesley Professional 2011
in aggiunta a dispense e slide disponibili sul sito di e-learning.
Modalità di verifica dell’apprendimento
L’esame consiste in una prova scritta a cui fa seguito una prova orale. Lo scritto, della durata di 2 ore, prevede una serie di 5-6 quesiti relativi agli argomenti trattati
a lezione. L’esito positivo (valutato in trentesimi) della prova scritta permette sia una verbalizzazione diretta sia l’accesso alla successiva prova orale, consistente
in 2 fasi:
una revisione della prova scritta in cui l’allievo viene informato sui criteri di correzione e chiamato a fornire eventuali precisazioni, permettendo così al docente
di modificare eventualmente il giudizio
un colloquio d’approfondimento con il docente, volto ad accertare l’acquisizione e la corretta comprensione dei diversi contenuti del corso.
Una brillante prova orale può bilanciare una prova scritta poco convincente e permettere il raggiungimento di una valutazione complessiva (in trentesimi) di assoluto
livello.
Orario di ricevimento
Il docente è a disposizione per il ricevimento studenti direttamente in aula al termine di ciascuna lezione, o su appuntamento in dipartimento (da concordare
tramite posta elettronica).