Il corso ha lo scopo di rendere gli studenti capaci di applicare le conoscenze di base relative alle principali strutture dati e ai principali algoritmi associati. A tale scopo gli studenti apprenderanno le tecniche di base per la progettazione e l'analisi degli algoritmi, insieme alla capacità di risolvere i più classici problemi legati all’elaborazione dei dati. Al termine del corso, lo studente sarà in grado di: 1. Comprendere le caratteristiche rilevanti di un modello di calcolo astratto, nonché l’importanza della complessità di un algoritmo al fine del suo utilizzo concreto. 2. Individuare gli algoritmi e le strutture dati di base più indicate in un dato contesto applicativo. 3. Conoscere e applicare i principali paradigmi di progettazione di algoritmi. Lo studente dovrà inoltre conseguire una consapevole autonomia di giudizio con riferimento alle problematiche tipiche della progettazione di algoritmi efficienti. Lo studente svilupperà infine una proprietà di linguaggio tale da poter formalizzare un problema in modo idoneo a una sua trattazione informatica.
Prerequisiti
È richiesta la capacità di programmare in ambiente "sequenziale"; specificamente è necessario che lo studente padroneggi la programmazione in Java (il linguaggio usato nel corso) nonché gli elementi di base relativi all’architettura di un elaboratore. Le conoscenze e abilità necessarie per un proficuo apprendimento di questo insegnamento sono impartite nei corsi fondamentali del primo anno di Programmazione e di Architetture degli elaboratori.