Conoscere tecniche, metodologie e strumenti per poter progettare, realizzare e valutare algoritmi di complessità crescente. Apprendere le basi fondamentali della modellazione di problemi, della loro trattabilità e dei metodi di soluzione tramite tecniche di ricerca, ottimizzazione combinatoria. Acquisire competenze per saper affrontare problemi reali sviluppando modelli e metodi. In particolare si forniscono gli strumenti per progettazione e gestione di sistemi complessi facendo in modo di operare nel modo più efficace ed efficiente in presenza di risorse limitate.