Insegnamenti

Complementi di Ricerca Operativa (6 crediti), Docente: Giovanni Righini

Il corso si propone di illustrare alcune delle più classiche tecniche algoritmiche della Ricerca Operativa, sia per la soluzione di problemi di complessità polinomiale sia per la soluzione di problemi NP-hard. E' previsto che lo studente realizzi in laboratorio, sotto la guida del docente, alcuni algoritmi appresi durante il corso. Link: pagina ufficiale del corso

Logistica (6 crediti), Docente: Giovanni Righini

Il corso descrive il funzionamento della catena logistica ed affronta le problematiche relative alla pianificazione e alla gestione dei sistemi logistici con particolare riferimento ai problemi di ottimizzazione che ne derivano e alle tecniche informatiche per risolverli. Link: pagina ufficiale del corso

Linguaggi di Programmazione (6 crediti), Docente: Alberto Ceselli

L’insegnamento intende fornire la capacità di

  • analizzare in modo critico ogni linguaggio di programmazione,
  • valutare le implicazioni che ha la scelta di un particolare linguaggio nei costi e nei tempi di sviluppo di un'applicazione,
  • scegliere il linguaggio giusto in contesti differenti,
  • sviluppare strategie per apprendere rapidamente nuovi linguaggi di programmazione.
A tal fine, nella prima metà dell’insegnamento è presentata una panoramica storica dell'evoluzione dei linguaggi di programmazione, delle loro caratteristiche comuni e della loro classificazione. Vengono brevemente presentati anche i fondamenti teorici alla base dell'equivalenza tra linguaggi di programmazione, del problema del rilevamento automatico di errori nei programmi e dell'indecidibilità algoritmica.
Poi, insieme a richiami di programmazione con stile imperativo, vengono approfondite le tecniche di programmazione secondo paradigma funzionale, dichiarativo e logico. La seconda metà dell’insegnamento, invece, analizza i cardini comuni a qualsiasi linguaggio di programmazione:
  • descrizione formale della sintassi e della semantica di un linguaggio di programmazione,
  • il sistema dei tipi, scope e binding,
  • programmazione strutturata, sottoprogrammi ed encapsulation,
  • abstract data types, tipi parametrici, overloading, polimorfismo,
  • supporto alla programmazione ad oggetti e generic programming,
  • supporto alla programmazione concorrente ed alla gestione delle eccezioni.
Durante tutto il corso vengono presentati esempi e proposti piccoli esercizi di programmazione utilizzando diversi linguaggi di programmazione reali.
Prerequisiti: capacità di programmazione in un linguaggio qualsiasi (ad esempio C, Java o C#), capacità di comprendere un testo in inglese.
Link: pagina ufficiale del corso

Metodi e Modelli per il Supporto alle Decisioni (6 crediti), Docente: Roberto Cordone

Il corso si propone di fornire agli studenti gli strumenti concettuali, procedurali e informatici per supportare le decisioni complesse (problema non completamente formalizzato, ambiente incerto, criteri molteplici per valutare le soluzioni e opinioni dei decisori contrastanti). Classicamente, si tratta delle decisioni in ambito pubblico (ad es., Valutazione d'Impatto Ambientale), che per natura sono incerte e compromissorie, ma richiedono procedure chiare e certificate di decisione. Problematiche simili presenta la valutazione complessiva di progetti e delle prestazioni di software, siti internet, sistemi informativi. Link: pagina ufficiale del corso

Progettazione e Analisi di Algoritmi (6 crediti), Docente: Roberto Cordone

Il corso si propone di presentare le tecniche di base per il progetto e l'analisi degli algoritmi. La prima parte chiarisce i concetti di correttezza e complessità per un algoritmo, di complessità per un problema e la tecnica di riduzione per progettare algoritmi e analizzare problemi. La seconda parte descrive la tecnica di progettazione di algoritmi per induzione, che ne garantisce intrinsecamente la correttezza, e discute l'analisi di complessità per gli algoritmi risultanti, sia iterativi sia ricorsivi. La terza parte consiste nella realizzazione pratica in laboratorio di un algoritmo per un problema complesso derivante da applicazioni pratiche. Durante l'intero corso sono previste lezioni in laboratorio per applicare i concetti proposti durante le lezioni teoriche. Link: pagina ufficiale del corso

Ricerca Operativa (6 crediti), Docente: Giovanni Righini

Il corso si propone di introdurre lo studente alla Ricerca Operativa, ossia allo studio scientifico dei metodi per risolvere problemi decisionali complessi con l'aiuto del calcolatore. In particolare l'enfasi del corso è posta sulla modellizzazione matematica e sulla formulazione e classificazione dei problemi di ottimizzazione. Una consistente parte del corso viene svolta in laboratorio, dove gli studenti apprendono l'uso di linguaggi di modellizzazione e di solutori general-purpose. Link: pagina ufficiale del corso

Progetto ed Ottimizzazione di Reti (6 crediti), Docente: Alberto Ceselli

Il corso intende fornire strumenti teorici e pratici per la soluzione di problemi decisionali complessi che sorgono nel campo della progettazione e dell'ottimizzazione delle infrastrutture e dei servizi di reti di telecomunicazione. Viene data particolare enfasi alle tematiche relative alla protezione da guasti alla rete, ed alla progettazione di infrastrutture e servizi che offrano garanzie di robustezza ed efficienza. Il corso e` rivolto a studenti sia di laurea magistrale in Informatica che di laurea magistrale in Sicurezza Informatica.

Algoritmi Euristici (6 crediti), Docente: Giovanni Righini (attualmente disattivato)

Il corso illustra i principali paradigmi per progettare e realizzare algoritmi euristici per problemi decisionali complessi con particolare riferimento ai problemi di ottimizzazione combinatoria. E' previsto che gli studenti svolgano attività sperimentale con gli algoritmi descritti nel corso. Link: pagina ufficiale del corso

Algoritmi e Strutture Dati (12 crediti), Docente: Roberto Aringhieri (attualmente con altro titolare)

Il corso si propone di introdurre lo studente alle tematiche della progettazione efficiente di algoritmi. Nella parte introduttiva saranno richiamati alcuni concetti di base e stabiliti due formalismi: uno per la valutazione del tempo di calcolo, l'altro per la rappresentazione dei tipi di dato astratti. Ogni struttura dati è presentata come un tipo di dato astratto al quale sono associati degli operatori di manipolazione. Questa fase è detta specifica del tipo di dato. Per ogni tipo di dato astratto, saranno proposte alternative implementazioni, dette realizzazioni, valutate ciascuna in base all'efficienza computazionale. L'analisi di algoritmi comprende prima la valutazione dell'impatto delle strutture dati sulla complessità di un algoritmo (caso dei cammini minimi) ed una rassegna dei paradigmi algoritmici di base. Infine saranno introdotti i concetti di base della teoria della complessità. Link: pagina ufficiale del corso

Complementi di Algoritmi (5 crediti), Docente: Roberto Cordone (attualmente disattivato)

Il corso si propone di completare la preparazione fornita allo studente dal corso di Algoritmi e Strutture di Dati da 5 crediti, attraverso l'implementazione in laboratorio degli algoritmi elementari con l'impiego delle strutture dati fondamentali, l'illustrazione di alcune strutture dati e algoritmi più sofisticati e la realizzazione di un progetto avanzato che ne faccia uso. La maggior parte delle lezioni si svolgono in laboratorio. Link: pagina ufficiale del corso

Modellazione e Valutazione delle Prestazioni (6 crediti), Docente: Roberto Aringhieri (attualmente disattivato)

Il corso si propone di fornire agli studenti gli strumenti di base per l'analisi e la valutazione delle prestazioni e dell'affidabilità di un sistema di calcolo. Il corso prevede una cospicua attività di laboratorio. Link: pagina ufficiale del corso

Ottimizzazione Combinatoria (6 crediti), Docente: Giovanni Righini (attualmente disattivato)

Il corso illustra alcune tecniche di programmazione matematica avanzata per la soluzione di problemi di ottimizzazione combinatoria NP-hard. E' previsto che lo studente realizzi, sotto la guida del docente, gli algoritmi appresi durante il corso. Link: pagina ufficiale del corso