a.a. 2017/2018 
II anno, I semestre 
9 CFU (7+2)


Il corso si propone di introdurre lo studente alle tematiche della progettazione efficiente di algoritmi mediante la metodologia dei dati astratti.  Ogni struttura dati è presentata come un tipo di dato astratto al quale sono associati degli operatori di manipolazione. Questa metodologia, che prevede la specifica del tipo di dato e la rappresentazione per ogni tipo di dato astratto, sollecita lo studente a progettare proposte alternative di implementazione, dette realizzazioni, valutate ciascuna in base all'efficienza computazionale. L'analisi di algoritmi comprende la valutazione dell'impatto delle strutture dati sulla complessità dell’algoritmo e del programma. Si richiede che lo studente conosca i concetti di base della teoria della complessità e sia in grado di applicarli in semplici algoritmi di base.

Accanto ai principi della astrazione, alle teorie formali del calcolo attraverso modelli algebrico-matematici, lo studente imparerà a categorizzare i problemi mediante lo strumento dello spazio di ricerca. Dovrà conoscere i paradigmi algoritmici selettivo e generativo e i problemi più noti e le tecniche solutive che a tali paradigmi si rifanno. Lo studente avrà consapevolezza delle possibilità e dei limiti delle metodologie informatiche basate sulla programmazione orientata ad oggetti, indipendentemente dallo specifico ambiente di programmazione scelto.

Le basi devono evidenziare gli aspetti essenziali della disciplina che rimangono inalterati a fronte del cambiamento tecnologico, in modo da fornire un sistema di riferimento culturale che trascende il tempo e le circostanze