Programma dei corsi applicativi

 

CORSI A CARATTERE INFORMATICO

 

Programmazione I e Laboratorio

Il corso ha lo scopo di introdurre i fondamenti della programmazione dei calcolatori elettronici, partendo dal concetto di algoritmo e dalla descrizione delle componenti basilari di un programma per il calcolo automatico. Questi concetti saranno applicati in alcuni algoritmi fondamentali. Il laboratorio associato ha lo scopo di familiarizzare lo studente, soprattutto mediante esercitazioni pratiche, sia con gli ambienti di programmazione, sia con le caratteristiche fondamentali dei linguaggi di programmazione imperativi. Nel corso e nell’associato laboratorio verrà messo l'accento sull'importanza di costruire programmi mediante metodologie ragionate.

Argomenti. Concetto di algoritmo. Diagrammi di flusso. Input/Output. Nozioni di correttezza e terminazione di un algoritmo (asserzioni, invarianti di ciclo) Complessità computazionale di un algoritmo (cenni). Il linguaggi di programmazione C. Tipi elementari, ed arrays. Istruzioni ed espressioni. Costrutti di controllo. Funzioni, e regole di "scope" delle variabili. Un modello di valutazione dei programmi C. Algoritmi di ricerca in una sequenza non ordinata e in una sequenza ordinata. Alcuni algoritmi di ordinamento

Laboratorio: elementi del sistema operativo Unix, editor, compilatore e debugger. Tipi e sintassi del linguaggio C. Metodi di decomposizione di un problema, scelta delle strutture dati e delle strutture di controllo. Osservazioni sull'efficienza, sulla comprensibilità e sulla facilità di debugging e di modifica di un programma.

Programmazione II

Il corso ha lo scopo di proporre alcuni fondamenti della programmazione dei calcolatori elettronici, introducendo concetti quali strutture dati dinamiche, ricorsione, tipi di dati astratti. Nel corso verranno sviluppati molti esempi di algoritmi, in modo da familiarizzare gli studenti con le tecniche di base della programmazione.

Argomenti: Tipi di dati strutturati. Tipi di dati dinamici (ricorsivi): le liste. Implementazione di liste mediante puntatori. Funzioni ricorsive. Tipi di ricorsione e conversioni. Tipi di dati astratti: pile e code. Algoritmi di ricerca e di ordinamento. Tipi di dati astratti. Algoritmi di ricerca in una sequenza non ordinata e in una sequenza ordinata. Funzioni di "hash". Algoritmi di ricerca e ordinamento.

Basi di Dati e Sistemi Informativi I (in alternativa ad Algoritmi e Strutture Dati 1)

Obiettivo del corso è di fornire gli strumenti metodologici e formali per derivare le strutture logiche e fisiche di una base di dati relazionale a partire dai requisiti del sistema informatico espressi utenti.

Argomenti: dei tre principali modelli dei dati (relazionale, reticolare e gerarchico) adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello e lo standard SQL (formalismi algebrici e logici di definizione dei dati, linguaggi di interrogazione e di specifica dei vincoli di integrità dei dati). Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali le cui proprietà sono derivate dalla teoria delle dipendenze. Le prestazioni delle applicazioni che fanno uso di un sistema di gestione di una base di dati sono influenzate strutture fisiche di memorizzazione delle informazioni e dai cammini di accesso previsti dal progettista della base di dati. La scelta di tali strutture richiede una adeguata conoscenza dell'architettura di un DBMS che viene presentata succintamente seguendo lo schema di descrizione generale a tre livelli di astrazione: esterno, logico e fisico.

 

Algoritmi e Strutture Dati I (in alternativa a Basi di Dati I)

L'obiettivo di questo corso è di insegnare le tecniche per la realizzazione di algoritmi efficienti e per l'analisi della complessità degli algoritmi.

Argomenti. Analisi degli algoritmi: teoria dei limiti e crescita asintotica delle funzioni, tecniche per l'analisi degli algoritmi ricorsivi. Algoritmi di "Pattern Matching". Algoritmi sui grafi: visita in ampiezza, visita in profondità, albero di copertura minimo, cammini minimi. Alberi binari di ricerca: cancellazione e inserimento di elementi, importanza del bilanciamento. B-alberi.

Programmazione ad Oggetti

Lo scopo del corso è di introdurre ed applicare i principi della programmazione ad oggetti.

Argomenti: concetti principali della programmazione ad oggetti (modularità, riusabilità), classi e oggetti (ereditarietà), metodi e polimorfismo. Il linguaggio JAVA. Il linguaggio C++. Il corso prevede numerose esercitazioni in laboratorio e lo sviluppo di un progetto sia in JAVA sia in C++.

 

 

CORSI A CARATTERE NUMERICO

 

Matematica Computazionale

Lo scopo di questo corso e' di mostrare il passaggio, spesso non indolore, dalla teoria alla pratica nel campo della matematica computazionale.

Verranno descritti e confrontati i principali strumenti di programmazione usati nelll'ambito della matematica applicata (librerie C, ambienti di calcolo scientifico tipo Matlab, ambienti di calcolo simbolico tipo Mathematica/Maple). Gli studenti dovranno utilizzare uno o piu' di questi strumenti per la soluzione di alcuni problemi matematici significativi mostrando di saper utilizzare in pratica i metodi di risoluzione descritti sui libri di testo.

Calcolo Numerico II: Ottimizzazione

Il corso si propone di illustrare le idee base dei metodi di ottimizzazione e le regole che trasformano i metodi in algoritmi numerici efficienti.

In particolare si considerano problemi di ottimizzazione senza vincoli per i quali si prendono in considerazione metodi numerici di base di tipo Newton e quasi-Newton e metodi di tipo direzioni coniugate.

Si considerano inoltre problemi di ottimizzazione vincolata ed elementi di programmazione lineare.

 

CORSI A CARATTERE ECONOMICO-FINANZIARIO

 

Ricerca Operativa e Teoria dei Giochi I

Programmazione matematica

Modelli di Programmazione Matematica - Programmazione Lineare - Problema duale e proprietà Interpretazione economica delle variabili duali - Programmazione Lineare a numeri interi - Metodi Branch & Bound - Metodi Cutting Plane - Rilassamenti.

Teoria dei Giochi

Rappresentazione di un gioco - Concetto di soluzione - Giochi non cooperativi - Equilibrio di Nash - Giochi cooperativi senza pagamenti laterali - Giochi cooperativi a pagamenti laterali - Nucleo.

Ricerca Operativa e Teoria dei Giochi II

Teoria delle Reti

Grafi - Reti - Problema del flusso massimo (Max-flow) - Problemi di alberi ricoprenti di peso minimo (Minimum spanning tree) - Problemi di cammino minimo (Shortest path problem).

Teoria dei Giochi

Utilità - Giochi non cooperativi - Giochi a somma zero - Strategie Miste - Dominanza - Strategie Correlate - Giochi cooperativi senza pagamenti laterali - Problema di contrattazione a due giocatori - Giochi di mercato - Giochi cooperativi a pagamenti laterali - Insiemi stabili - Nucleo - Indici di potere - Nucleolo.

Applicazioni della Teoria dei Giochi

Allocazione di costi - Giochi su Reti.

Teoria degli investimenti finanziari

Scopo del corso: illustrare cos’è un investimento finanziario e fornire i metodi di base utilizzati nella gestione quantitativa di un portafoglio finanziario. Eventualmente si potrebbe aggiungere una parte di teoria delle serie storiche (se c’è la collaborazione di uno statistico).

Argomenti: Introduzione agli strumenti finanziari: azioni, obbligazioni, futures, opzioni e altri strumenti derivati. Valutazione del prezzo di uno strumento finanziario. Definizione di rendimento e di rischio. Teoria di portafoglio: cos’è un portafoglio finanziario, calcolo del rendimento medio, della varianza. Cos’è un Portafoglio Efficiente. Metodi per la determinazione di un portafoglio efficiente. La frontiera efficiente. Valutazione del rendimento di un portafoglio. Confronto tra gestione attiva e gestione passiva. I mercati finanziari. CAPM (capital asset pricing model). APT (arbitrage pricing theory). Il mercato efficiente.

Matematica finanziaria

Calcolo finanziario di base.

Leggi di capitalizzazione ad una variabile: valore attuale e montante, interesse e sconto, valore attuale unitario, regimi di uso comune. Estensioni a leggi a due variabili, tassi spot e forward. Rendite di vario tipo, costituzione di capitale, ammortamento di prestiti indivisi, tasso interno di costo e rendimento.

Calcolo finanziario avanzato.

Problemi di valutazione e selezione di progetti economico-finanziari: progetti puri e misti, criteri di valutazione. Problemi di ottimo lineare statico di interesse economico-finanziario: production scheduling, capital rationing, perfect matching, il modello vespa. Fondamenti di Economia Aziendale: cos’è un’impresa, capitale e reddito, fondi e flussi, principi di base della contabilità sistematica. Introduzione ai derivati nel discreto: opzioni europee call e put, arbitraggio, replicabilità, completezza, principio di valutazione neutrale rispetto al rischio, modello binomiale a due e più date.