Programmi dei corsi nel PSC Ingegneria dei servizi in rete, Laurea Specialistica in Ingegneria Informatica, Politecnico di Milano, AA 2007-08

Corsi fondamentali

Corsi caratterizzanti il piano

 


Fondamenti di Ricerca operativa D

Obiettivi
Presentare alcune metodologie di base della Ricerca Operativa (RO) ponendo particolare attenzione agli aspetti modellistici e algoritmici che emergono nella soluzione di problemi reali in ambito ingegneristico.


Programma delle lezioni e delle esercitazioni
1. Introduzione: Problemi decisionali, esempi e caratteristiche. Schema generale di uno studio di RO. Tipologia dei modelli di ottimizzazione (programmazione matematica).

2. Ottimizzazione su grafi e reti: Problema di raggiungibilità in un grafo. Algoritmi e ordine di complessità. Progettazione di reti: alberi di supporto di costo minimo, algoritmi di Prim e di Kruskal. Problema dei cammini minimi: algoritmi di Dijkstra e di Floyd-Warshall, e metodo di programmazione dinamica per grafi senza circuiti. Pianificazione dei progetti: metodo del cammino critico e diagrammi di Gantt. Problema del flusso di valore massimo: algoritmo di Ford-Fulkerson, teorema del flusso massimo e taglio minimo.

3. Cenni alla teoria della complessità computazionale: Problemi di riconoscimento, classi P e NP, problemi NP-completi e NP-difficili. Problema del commesso viaggiatore ed altri esempi.

4. Programmazione lineare: Forme equivalenti, aspetti geometrici (vertici della regione delle soluzioni ammissibili) e algebrici (soluzioni di base ammissibili). Proprietà fondamentali della programmazione lineare. Metodo del simplesso. Teoria della dualità: dualità debole e forte, condizioni degli scarti complementari. Interpretazione economica. Analisi di sensitività. Casi speciali: problemi di assegnamento e trasporto.

5. Programmazione lineare intera: Metodi di risoluzione esatti e approssimati. Branch & Bound e tecniche per ottenere i “bounds” (stime dell’ottimo). Metodo dei piani di taglio con tagli di Gomory.

Attività di laboratorio
Si prevede lo svolgimento di esercitazioni in laboratorio informatico con l'introduzione di software per la modellizzazione e la risoluzione dei problemi di programmazione matematica.

--------------------------------------------------------------------------------
Bibliografia
Bibliografia consigliata


M. Fischetti, Lezioni di Ricerca Operativa, seconda edizione, Edizioni Libreria Progetto, Padova, 1999.

M. Dell’Amico, 120 Esercizi di Ricerca Operativa, Pitagora Editrice, Bologna, 1996.

F.S. Hillier, G.J. Lieberman, Introduction to Operations Research, sixth edition, McGraw-Hill, 1995.

W.L. Winston, Operations Research, Applications and Algorithms, third edition, ITP, 1994.


Altro materiale didattico
Copie dei lucidi disponibili sul sito web del corso, software AMPL scaricabile gratuitamente.


Basi di dati 2 (5 crediti)

Programma Dettagliato
Sistemi transazionali.
Importanza dei sistemi transazionali. Esempi di sistemi classici: sistemi finanziari, bancari, di order-entry, di prenotazione. Concetto di transazione. Proprietà di una transazione: atomicità, consistenza, isolamento, persistenza. Teoria del controllo di concorrenza. Nozioni di serializzabilità ed equivalenza fra schedule. Locking a due fasi. Locking gerarchico. Analisi e risoluzione dei deadlock. Cenni ad altre tecniche per il controllo di concorrenza basate sull'uso di timestamp. Teoria della affidabilità. Gestione del log. Protocolli di recovery.

Architettura interna di un server relazionale.
Nozione di pagina logica e fisica. Politiche di gestione del buffer. Tecniche di ricerca e gestione e riordino dei dati con: organizzazione sequenziale, diretta, ad indice. Alberi B e B+. Funzioni di hashing. Metodi di accesso: scansioni, ordinamenti, join. Ottimizzazione delle interrogazioni.

Architetture distribuite e parallele
Scenari applicativi per le basi di dati in un sistema informativo distribuito. Architettura client-server. Descrizione delle funzionalita` dei client e dei server. Standard ODBC. Classificazione delle tipologie di basi di dati distribuite. Frammentazione e allocazione dei dati. Distribuzione e ottimizzazione delle interrogazioni. Transazioni distribuite. Commit a due, tre o quattro fasi. Standard di interoperabilità: XOPEN-DTP. Parallelismo. Scale-up e speed-up delle transazioni. Gestione di dati replicati: tecniche sincrone e asincrone.

Basi di dati orientate ad oggetti.
Modello dei dati: concetti di tipo, classe, metodi, implementazioni. I sistemi relazionali ad oggetti. Linguaggi a oggetti: OQL, SQL:1999.

Basi di dati attive.
Descrizione del paradigma ECA (evento/condizione/azione) per regole attive. Meccanismi di esecuzione di regole attive. Tecniche di analisi per regole attive. Triggers nei sistemi relazionali. Applicazioni delle basi di dati attive.

Basi di dati XML.
Basi di relazionali-XML, basi di dati XML native, linguaggi di interrogazione per XML. Esempi di sistemi.

Data warehouse e data mining.
Definizione di OLAP e OLTP. Architettura di una data warehouse. Metodologie di progettazione per data warehouse. Esempi di sistemi. Definizione di data mining. Regole di associazione: definizione e concetti. Web mining. Esempi di sistemi.

Studio di casi aziendali
Presentazione e discussione di alcuni casi aziendali rilevanti

--------------------------------------------------------------------------------
Bibliografia
P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone "Basi di dati - Architetture e linee di evoluzione", seconda edizione, McGraw-Hill Italia, 2007.


Ingegneria del software 2 (5 crediti)

Programma Dettagliato
L'obiettivo del corso è quello di fornire agli studenti i concetti relativi ai moderni processi di produzione del software ed i principi dell’ingegneria dei requisiti, delle architetture software, delle metodologie di progettazione. Durante il corso verranno presentate anche alcune notazioni di specifica e i più comuni metodi e strumenti per la verifica e la convalida. Più in dettaglio, gli argomenti che saranno parte del programma del corso sono i seguenti:


Il processo software e gli standard

cicli di vita a cascata, basato su prototipi, evolutivo/ incrementale, a spirale;
metodi “agili”
standard: ISO2001, CMM

Il prodotto software e il contesto economico-sociale

modelli di business
licenze e proprietà intellettuale: il software open-source

Definizione del problema: ingegneria dei requisiti

importanza dell'analisi dei requisiti
il modello di Jackson-Zave (requisiti, specifica, dominio)

Metodi e tecnologie per lo sviluppo di applicazioni

design patterns
middleware
componenti software: i modelli di J2EE e .net
architetture software e stili architetturali

Notazioni e metodi per la specifica

UML e StateCharts
Alloy

Verifica e convalida

testing e analisi
reviews, walkthroughs

--------------------------------------------------------------------------------
Bibliografia
Ghezzi Carlo, Jazayeri Mehdi, Mandrioli Dino. Ingegneria del software. Fondamenti e principi. Pearson Education Italia, 2004. Verranno segnalati libri e articoli e rapporti attraverso il sito del corso (http://corsi.metid.polimi.it/). Il sito conterra' anche le copie delle slides usate dal docente a lezione.


Linguaggi formali e compilatori (5 crediti)

Programma Dettagliato
Obiettivi

Apprendere i concetti, gli algoritmi e gli strumenti pratici impiegati nella definizione dei linguaggi artificiali e nel progetto dei loro traduttori (compilatori).


Programma delle lezioni

Definizione dei linguaggi:
Teoria dei linguaggi formali; Espressioni regolari; Similarità strutturale e astrazione linguistica; Grammatiche libere dal contesto; Ambiguità; Grammatiche dei linguaggi regolari; Proprietà delle famiglie di linguaggi liberi e regolari; Principali strutture sintattiche; Limitazioni dei linguaggi liberi dal contesto.
Analisi e riconoscimento delle frasi:
Algoritmi di riconoscimento e automi; Automi finiti deterministici e non; Automi a pila; Linguaggi deterministici; Reti ricorsive di macchine; Analisi sintattica (parsificazione) discendente LL(k) e sua realizzazione per mezzo di procedure ricorsive; Analisi sintattica ascendente LR(k); Algoritmo parsificatore generale di Earley.
Traduzione e semantica:

3.1 Traduzioni puramente sintattiche. Traduzioni dirette e inverse; Traslitterazioni; Espressioni regolari di traduzione e automi traduttori finiti; Schemi sintattici di traduzione e automi traduttori a pila; Analisi sintattica e traduzione.

3.2 Traduzioni semantiche guidate dalla sintassi. Funzioni semantiche e grammatiche ed attributi; Cenni alla struttura dei compilatori; Esempi di controlli semantici e di traduzione verso il codice macchina; Analisi semantica a discesa ricorsiva con calcolo degli attributi in una o più passate.

3.3 Analisi statica di flusso. Grafo di controllo del flusso; Definizioni e usi delle variabili; Vriabili vive raggiungenti; Equazioni di flusso; Scoperta delle variabili mal'inizializzate e degli assegnamenti inutili


Programma delle esercitazioni

Progetto del lessico e della sintassi di un semplice linguaggio simile al C. Compilazione del linguaggio in un linguaggio intermedio (macchina virtuale) eseguibile a registri. Uso degli strumenti (flex e bison) per la costruzione degli analizzatori lessicali e sintattici e dei traduttori guidati dalla sintassi, per realizzare detto compilatore.


Prerequisiti

Elementi di informatica teorica: teoria degli automi, calcolo dei predicati, ricorsione e decidibilità, complessità del calcolo. Algoritmi e strutture dati. Programmazione in linguaggio C.

--------------------------------------------------------------------------------
Bibliografia
Il libro di testo è:
S. Crespi Reghizzi, Linguaggi formali e compilazione, 2da ed., Pitagora, Bologna, 2007.

In lingua inglese si può indicare:

A. Aho, M. Lam, R. Sethi, and J. Ullman, Compilers: principles techniques and tools, Addison-Wesley, 2006.

e per le basi teoriche

J. Hopcroft and J. Ullman, Introduction to automata theory: languages and computation, Addison-Wesley 1979.


Altro materiale didattico:

Presso CorsiOnLine, www.corsi.metid.polimi.it, la pagina web del corso contiene il materiale per le esercitazioni, i lucidi usati in aula dai docenti e gli esercizi svolti per la preparazione dell’esame.



Tecnologie dei servizi 1 (5 crediti)

Obiettivi
Il corso presenta i concetti principali e le tecnologie di base per la progettazione e la realizzazione di applicazioni a servizi. Il corso presenta i paradigmi di interazione, i modelli concettuali di riferimento (SoA e SCA) e le principali tecnologie abilitanti. Per quanto riguarda quest'ultimo aspetto, il corso è diviso in due parti: standard e tecnologie di base per i Web service e altre infrastrutture a servizi.


Prerequisiti
Il corso non richiede pre-requisiti particolari, ma la conoscenza, anche di base, dei sistemi distribuiti e di Java faciliterebbe lo studente.


Distribuzione indicativa dell'attività didattica


30 ore di lezione e 20 ore di esercitazioni (anche pratiche).

Programma delle lezioni e delle esercitazioni
La prima parte del corso definisce i ruoli e il modello concettuale delle applicazioni a servizi

Contesto del corso e motivazioni per il paradigma a servizi
Service-oriented Architecture (SoA)
Service Component Architecture (SCA) come evoluzione delle SoA

La parte centrale del corso introduce gli strati bassi della pila di protocolli per Web service

Cenni di XML e XPatch
SOAP (Simple Ojbect Access Protocol) come protocollo per lo scambio di informazioni)
WSDL (Web Service Description Language)
Meccanismi e tecnologie per il deployment di Web service
Altri protocolli di base: WS-Addressing, WS-ReliableMessaging
I registry di servizi

L'ultima parte del corso presenta l'applicazione del paradigma di interazione in contesti non Web

Jini (paradigma a servizi in Java)
OSGi (Open Services Gateway initiative)
Introduzione ai Grid Service

--------------------------------------------------------------------------------
Bibliografia
Michael P. Papazoglou, Web Services: Principles and Technologies, Pearson-Prentice Hall, 2008
Documentazione on-line suggerita dal docente
Dispense e lucidi del corso


Statistica

OBIETTIVI
Fornire allo studente le corrette tecniche di base dell'inferenza statistica. Queste tecniche sono di base per affrontare analisi statistiche avanzate, ma sufficienti per analisi statistiche elementari.

PROGRAMMA DELLE LEZIONI E DELLE ESERCITAZIONI
RICHIAMI DI CALCOLO DELLE PROBABILITÀ.
Variabili aleatorie discrete e continue, funzione di ripartizione, funzione di densità, funzione generatrice dei momenti. Valore atteso, varianza e loro proprietà. Trasformazioni di variabili aleatorie. Vettori aleatori discreti e continui, funzioni di densità e ripartizione congiunte e marginali. Variabili aleatorie indipendenti. Somme di variabili aleatorie indipendenti e identicamente distribuite.

STATISTICA PARAMETRICA.
Teoria della stima. Metodo dei momenti e metodo di massima verosimiglianza per la costruzione di stimatori puntuali. Stimatori UMVUE. Disuguaglianza di Cramer-Rao ed efficienza. Informazione di Fisher. Accenni alle famiglie esponenziali di distribuzioni. Proprietà asintotiche degli stimatori: non distorsione asintotica, consistenza, normalità asintotica. Proprietà asintotiche degli stimatori di massima verosimiglianza.
Distribuzioni campionarie nel caso di campionamento da popolazione gaussiana: famiglia delle distribuzioni gamma, distribuzione chiquadrato, t di Student, F di Fisher.
Valutazione dell'accuratezza della stima. Intervalli e regioni di confidenza. Metodo della quantità pivotale. Intervalli di confidenza per media e varianza di popolazioni gaussiane.
Verifica delle ipotesi. Teoria di Neyman Pearson: test uniformemente più potenti, Lemma di Neyman Pearson, test del rapporto di verosimiglianza (generalizzato). Test d'ipotesi per medie e varianze da popolazioni gaussiane: Z-test, t-test, chiquadrato-test, F-test; t-test sul coefficente di correlazione lineare per dati accoppiati gaussiani.
Dualità fra prova di ipotesi e stima intervallare. Intervalli di confidenza e test di ipotesi per la media di popolazioni non gaussiane nel caso di grandi campioni; intervalli di confidenza e test asintotici per una proporzione.

STATISTICA NON PARAMETRICA.
Funzione di ripartizione empirica e sue proprietà. Accenno al Teorema di Glivenko-Cantelli. Accenni alle statistiche d'ordine e ai quantili empirici. Test di buon adattamento: test di Kolmogorov-Smirnov, test chiquadrato di Pearson.
Test di concordanza e indipendenza: test chiquadrato di indipendenza per dati categoriali; nozione di concordanza e discordanza alla Kendall, tau di Kendall teorica e campionaria, test di indipendenza e concordanza di Kendall.
Test di aleatorietà (randomness) di Kendall. Test di omogeneità di Wilcoxon-Mann-Wintney per dati indipendenti, test dei segni di Wilocoxon per dati accoppiati.

PREREQUISITI
Per seguire il corso sono necessari i contenuti di un corso introduttivo di Calcolo delle probabilità. In particolare lo studente deve sapere operare con variabili aleatorie, vettori aleatori, successioni di variabili aleatorie, funzioni di variabili aleatorie, vettori gaussiani, media, varianza, momenti e covarianza. Comunque, una prima breve parte del corso (circa 5 ore) sarà riservata ai richiami di calcolo delle probabilità.

--------------------------------------------------------------------------------
Bibliografia
BIBLIOGRAFIA CONSIGLIATA
Pestman, Wiebe R. Mathematical Statistics An Introduction 1998. Paperback De Gruyter ISBN 3-11-015356-4

Dispense delle lezioni, testi delle esercitazioni e scritti risolti degli anni passati sul sito del corso http://www1.mate.polimi.it/~ileepi

Conover, W.J. Practical NonParametrics Statistics, 3nd Edition 1999. Wiley New York ISBN 0471160687



ALTRO MATERIALE DIDATTICO
Ross, S.M. (2003). Probabilità. e statistica per l'ingegneria. Apogeo.


Tecnologie dei servizi 2 (5 crediti)

Lo scopo del corso e' di presentare i concetti principali e le tecnologie per la realizzazione di applicazioni complesse basate su servizi. Tali applicazioni sono realizzate tramite composizione di servizi, utilizzando paradigmi di coordinamento dei servizi, di modellazione e negoziazione della qualità del servizio. Vengono inoltre trattati aspetti di gestione dei servizi, quali la gestione dei servizi in ambente distribuito e la sicurezza.

Il corso verrà attivato nell'AA 2008-09


Laboratorio software


Obiettivi
Rendere lo studente in grado di studiare soluzioni avanzate per la progettazione di software complesso, anche in ambienti concorrenti.

Prerequisiti

La programmazione, anche di rete, in linguaggio C e la programmazione ad oggetti (es. Java).


Programma delle lezioni e delle esercitazioni

Il corso è diviso in due parti, una teorica e una progettuale, di uguale peso nella valutazione finale.

Le lezioni serviranno per sistematizzare e integrare concetti di programmazione avanzata e di sistemi operativi, accennati durante i corsi presenti nell’offerta formativa della laurea triennale. Le esercitazioni avranno lo scopo di familarizzare lo studente con gli strumenti e gli ambienti che saranno utilizzati per lo sviluppo dei progetti.

In particolare nella parte teorica di lezione saranno affrontate le seguenti tematiche:

Lo scheduling della CPU
Problematiche legate all’accesso in mutua esclusione a risorse condivise
Tecniche di sincronizzazione e comunicazione fra processi
Cenni alle caratteristiche di sistemi operativi commerciali
Durante le esercitazioni saranno appronfonditi gli aspetti di programmazione concorrente, in particolare per gli aspetti di sincronizzazione e comunicazione fra processi e thread.

Attività di progetto (50% valutazione)
Gli studenti vengono divisi in gruppi il cui obiettivo è sviluppare autonomamente un elaborato. Lo studente deve dimostrare la propria conoscenza dei linguaggi, metodi e strumenti introdotti ad inizio corso o derivati da altri corsi della laurea, e la propria capacità di utilizzarli per risolvere le problematiche sviluppando il software opportuno.


Per completare il corso saranno inoltre proposti progetti da 2,5 crediti/studente, da svolgere in gruppi tipicamente di due o tre studenti, legati alle seguenti tematiche, ovvero concordati con i docenti dei relativi corsi:

Ingegneria del software (in collaborazione con il corso di Ingegneria del Software 2)
Linguaggi e compilatori (in collaborazione con il corso di Linguaggi formali e compilatori)
Progettazione di sistemi CAD per il design di sistemi digitali (in collaborazione con i corsi di Sistemi Embedded, Metodologie di progetto hardware, Architettura dei calcolatori, Laboratorio di modellazione di sistemi)

Potranno inoltre essere proposti progetti sui seguenti temi di sistemi operativi:

Analisi con sviluppo di codice relativo a problematiche di programmazione concorrente, con meccanismi di comunicazione e sincronizzazione a livello di processo.
Ricerche e sperimentazione su argomenti avanzati di Sistemi Operativi Real-Time e sugli strumenti di sviluppo e ottimizzazione delle applicazioni

--------------------------------------------------------------------------------
Bibliografia

H.M. Deitel, P.J. Deitel, D.R. Choffnes, Sistemi Operativi, 3a edizione, Pearson Education Italia, 2005

Copie delle slide e altro materiale sul sito del docente in formato Acrobat pdf: www.elet.polimi.it/~fornacia
Mitchell, Oldham, Samuel, Advanced Linux Programming, New Riders. Scaricabile gratuitamente dal sito www.advancedlinuxprogramming.com
Testi per approfondire i sistemi operativi:

W. Stallings: Operating Systems: Internals and Design Principles (4th Edition), Prentice Hall, 2000
A.Tanenbaum, Modern Operating Systems, Prentice-Hall, 4th edition, 2001
Testi per approfondire gli aspetti di programmazione concorrente:

W. Richard Stevens, UNIX Network Programming – Interprocess Communications, vol.2, 2nd edition, Prentice Hall, 1998.
W.Richard Stevens, Advanced Programming in the UNIX Environment, Addison Wesley, 1993.
Gregory R. Andrews, Foundations of Multithreaded, Parallel and Distributed Programming, Addison Wesley, 2000.


Corso di ingegneria di base

A scelta tra:


Crittografia e sicurezza

Programma Dettagliato
Obiettivi
Il corso è dedicato agli aspetti della sicurezza delle informazioni e delle comunicazioni. La teoria della sicurezza viene illustrata con riferimento alla teoria dei numeri e ai campi finiti. Vengono quindi introdotti i metodi di crittografia classica, basati su cifrari a sostituzione e permutazione, e sono descritti gli standard della moderna crittografia a chiave segreta. Vengono poi fornite le basi teoriche della crittografia a chiave pubblica e illustrati i relativi standard. Vengono infine introdotti i metodi di autenticazione di persone e di messaggi, basati su certificati e firme digitali, nonché i protocolli per consentire lo scambio affidabile delle chiavi di cifratura.

Programma delle lezioni e delle esercitazioni
1. Servizi di sicurezza. Confidenzialità, integrità, autenticazione, anonimità.
2. Aritmetica modulare. Teoria dei numeri e aritmetica modulare. Operazioni e algoritmi di inversione. Teoremi di Fermat e di Lagrange. Logaritmi discreti. Campi finiti e aritmetica modulare dei polinomi. Operazioni nei campi di Galois GF(2n).
3. Crittografia a chiave segreta. Cifrari a blocchi mono e polialfabetici e cifrari a catena. Cenni sulla crittoanalisi. L’algoritmo DES e le sue concatenazioni. Lo standard AES e l’algoritmo Rijndael.
4. Crittografia a chiave pubblica. L’algoritmo di Rivest, Shamir e Adleman. Cenni sulla crittoanalisi e sui test di primalità. Firme digitali: l’algoritmo di ElGamal. Autenticazione dei messaggi e funzioni hash. Certificati e autorità di certificazione. Algoritmi di crittografia a curve ellittiche: logaritmi discreti e cifratura.
5. Servizi e protocolli di sicurezza. Servizi di sicurezza e tassonomia degli attacchi. Protocolli d’identificazione: Needham-Schroeder. Protocolli di instaurazione autenticata delle chiavi: pre-distribuzione, distribuzione e accordo. Protocollo di Diffie e Hellman. Protocollo Kerberos.

Attività di laboratorio: non previste

Prerequisiti: nessuno

--------------------------------------------------------------------------------
Bibliografia
Testo di riferimento
Wade Trappe, Lawrence C. Washington: Introduction to Cryptography with Coding Theory, Prentice Hall, 2002

Testi di consultazione
Douglas R. Stinson: Cryptography – Theory and Practice, CRC Press, 2002

Altro materiale didattico
Raccolta di esercizi svolti disponibile sul sito del corso


Affidabilità dei sistemi informatici (2,5 crediti)

Programma Dettagliato
La crescente complessità degli impianti informatici rende necessario ingegnerizzare il meccanismo di gestione dei servizi erogati, con il duplice scopo di massimizzarne la disponibilità e di ottimizzarne i costi di gestione. In questa ottica lo studio dell'affidabilità diventa fondamentale per tutte le attività legate all’operatività degli impianti e delle applicazioni. Il corso si rivolge agli studenti di ingegneria informatica, delle telecomunicazioni e gestionale e si propone di integrare le conoscenze tecnologiche e di processo necessarie per una corretta comprensione del problema della gestione dei servizi informatici.


Il corso offre una panoramica sulle problematiche di affidabilità dei sistemi informatici, in relazione alla loro capacità di continuare a funzionare correttamente anche in presenza di situazioni anomale. L’affidabilità delle componenti hardware, del middleware e delle applicazioni è un requisito indispensabile per garantire continuità, qualità e sicurezza nell’erogazione dei più diversi servizi: applicazioni di commercio elettronico, sistemi di home-banking, call center, servizi di telefonia fissa e mobile, sistemi di controllo del volo per aeromobili, solo per citarne alcuni.
Il corso vuole fornire una visione completa dei problemi legati all’affidabilità di un sistema informatico, descrivendo modelli matematici, strumenti tecnologici e processi aziendali necessari per la progettazione di sistemi altamente affidabili.

Gestione dei servizi informatici. Il service support: risoluzione degli incidenti e dei problemi, pianificazione e implementazione dei cambiamenti, gestione delle configurazioni. Il service delivery: livelli di servizio, pianificazione delle prestazioni e dell’affidabilità, metodologie per il disaster recovery. La metodologia ITIL.
Affidabilità: concetti base e terminologia. Cenni di statistica: statistica degli estremi.
Dependability: reliability, availability, performability, mantainability. Failure hardware e software.
Mean Tiime To Failure (MTTF), Mean Tiime Between Failure (MTTF), Mean Tiime To Data Loss (MTTDL), Failure rate. Curve bathtub. Tempo di missione. Metodologie di incremento dell'affidabilità basate su ridondanza d'informazione, ridondanza temporale e ridondanza spaziale.
Modelli per l'affidabilità. Affidabilità di sistemi complessi: diagrammi a blocchi, sistemi in serie, in parallelo e in stand-by. Affidabilità condizionale: teoremi di Bayes e di Drenick. Fault tree analysis (FTA). Minimal cut-set. Catene di Markov discrete e continue. Calcolo dell'MTTF: prove sperimentali per l'analisi dell'affidabilità, prove accelerate
Tolleranza ai guasti. Sistemi ed applicazioni tolleranti ai guasti: analisi di copertura, rilevazione e tolleranza ai guasti, watchdog. Affidabilità degli impianti: load balancing, sistemi in cluster attivo/attivo e attivo/passivo, dischi raid e sistemi di storage.

--------------------------------------------------------------------------------
Bibliografia
Come testo di approfondimento è possibile utilizzare (limitatamente alle pagine 7-72) il libro:
P.Cremonesi, "Impianti Informatici Enterprise", McGraw Hill, 2007, eventualmente presso la Clup oppure on-line su BoL

Il materiale didattico relativo alle lezioni sarà reso disponibile dal docente durante lo svolgimento del corso sul sito di "Corsi On Line"


Sicurezza degli impianti informatici (2,5 crediti)

Programma Dettagliato
Obiettivi

Il corso si propone di introdurre le problematiche della sicurezza dell’informazione, con particolare riferimento alle architetture degli impianti informatici in rete. Saranno illustrate le principali tecniche di information security engineering e le soluzioni adottate per realizzare impianti sicuri. Il corso unirà aspetti teorici e pratici, con analisi di case studies.


Programma delle lezioni e delle esercitazioni
1 Introduzione alle problematiche di sicurezza informatica

1.1 I principali tipi di attacchi alla sicurezza di un impianto informatico
1.2 I principali metodi di difesa

2 Confidenzialità e certificazione delle informazioni

2.1 Concetti di base: cifrari, trasposizione e sostituzione.
2.2 Algoritmi a chiave simmetrica: DES, 3DES, AES, IDEA
2.3 Algoritmi a chiavi asimmetriche. RSA e Diffie-Hellman
2.4 Funzioni di hash (SHA, MD5) e firma digitale
2.5 Certificati digitali: l’architettura delle certification authority
2.6 Case studies di implementazioni disponibili

3 Architetture distribuite sicure


3.1 Attacchi attraverso i protocolli
3.1.1 Sniffing, Denial of service, Spoofing, DNS poisoning, ARP poisoning
3.2 Firewall
3.2.1 Le principali funzioni svolte (packet filtering, NAT, Proxy, …)
3.2.2 Classificazione dei firewall
3.3 Tipi di architetture
3.3.1 DMZ, …
3.4 Valutazione delle prestazioni e dell’overhead
3.5 Reti wireless: WEP, EAP, 802.1X
3.6 Tool per verificare la sicurezza
3.6.1 Attivi (Portscanner, Vulnerability Assessment Tools)
3.6.2 Reattivi (sistemi IDS)

4 Impianti informatici per l’e-business

4.1 Architetture sicure per l’e-commerce
4.2 Transazioni commerciali sicure: IPSEC, HTTPS, SET e la dual signature

5 Aspetti organizzativi della sicurezza

5.1 L’analisi del rischio
5.2 Le politiche di Sicurezza
5.3 Problematiche gestionali della sicurezza
5.4 La Sicurezza fisica

6 Aspetti legali ed etici


6.1 Normativa italiana sul crimine informatico
6.2 La problematica della privacy

Le esercitazioni saranno tenute dall'Ing. Stefano Zanero.
Il corso è complementare a quello di “Sicurezza delle applicazioni informatiche”. I due corsi possono essere seguiti in modo indipendente.

Prerequisiti
Nessun prerequisito particolare, ma sono richieste nozioni di base sul funzionamento dei protocolli di rete TCP/IP.


--------------------------------------------------------------------------------
Bibliografia
Testo di riferimento per il corso: Security Engineering, Ross Anderson, Wiley, 2002.

Saranno inoltre distribuite in corso d’anno delle dispense.


Per ulteriori approfondimenti si consigliano:

Computer Security, Dieter Gollmann, Wiley, 2003.

Practical Unix & Internet Security, Simson Garfinkel, Gene Spafford, O'Reilly, 1996.

Applied Cryptography, Bruce Schneier, Wiley, 2000.

Il materiale didattico relativo alle lezioni sarà reso disponibile dal docente sul sito di Corsi On Line all'indirizzo http://corsi.metid.polimi.it/


Sicurezza delle applicazioni informatiche (2,5 crediti)

Programma Dettagliato

Questo corso ha l’obiettivo di introdurre alle problematiche della sicurezza dell’informazione, con particolare riguardo alla realizzazione di applicazioni sicure. Saranno illustrate le principali problematiche e le tecniche utilizzate a questo scopo. Il corso unirà aspetti teorici e pratici.

Introduzione

I principali attacchi alla sicurezza di un impianto informatico

I principali metodi di difesa

Autenticazione

Tecniche di autenticazione: conoscenza di informazione segreta, biometria, possesso di dispositivi fidati

Autenticazione a molti fattori

Controllo degli accessi

Politiche discrezionali (DAC)

Politiche mandatorie (MAC)

Modelli di controllo dell’accesso evoluti

Sicurezza dei DBMS

Controllo degli accessi e privilegi nei DBMS

Poli-istanziazione

Vulnerabilità nel software

Errori di design

Errori di implementazione

Errori di configurazione

Sicurezza delle applicazioni web

Considerazioni architetturali

Cross-site scripting

--------------------------------------------------------------------------------
Bibliografia

Dispense distribuite in corso d’anno
Security Engineering, Ross Anderson, Wiley, 2002, http://www.cl.cam.ac.uk/~rja14/book.html
Secure Programming for Linux and UNIX, David Wheeler, http://www.dwheeler.com/secure-programs/
Computer Security, Dieter Gollmann, Wiley, 2003
Applied Cryptography, Bruce Schneier, Wiley, 2000


Reti Internet Multimediali


Programma Dettagliato
Programma del corso di Reti multimediali su Internet

La comunicazione multimediale su Internet ed i requisiti di Qualita’ del Servizio ad essa associati. I media digitali audio e video per Internet. Applicazioni multimediali consumer-oriented e business-oriented. Il rapporto tra cliente business/retail e provider. I Service Level Agreement (SLA); la definizione dei requisiti di qualita’ del servizio per il trasporto di contenuti multimediali; la contrattualizzazione degli SLA tra cliente e fornitore.
La descrizione del profilo di traffico nei contratti cliente/fornitore; il Traffic Conditioning Agreement (TCA). Il controllo del profilo di traffico da parte del provider; la regolazione del traffico; il policing; il marking; lo shaping.
Le procedure di allocazione delle risorse per la garanzia della Qualita’ del Servizio; il ruolo del TCA e dello SLA nell’allocazione delle risorse. Le politiche di scheduling per la garanzia della Qualita’ del Servizio nelle reti multimediali.
Architetture pratiche per la garanzia della Qualita' del Servizio. Le reti a servizi IP differenziati. Le reti a servizi IP integrati. Il MultiProtocol Label Switching. Problematiche di routing connesse alla gestione della qualita' del servizio. Il protocollo COPS (Common Open Policy Service) e le architetture per la gestione delle politiche di qualità del servizio.

Il progetto di reti IP con qualita' del servizio. Il Network Calculus; gestione del traffico condizionato; inviluppi di traffico e di servizio; il progetto degli scheduler FIFO, Static Priority, Earliest Deadline First, General Processor Sharing. Traffico short-range dependent e traffico long-range dependent.

--------------------------------------------------------------------------------
Bibliografia
1.Greenville Armitage, Quality of Service in IP networks, Pearson Education, 1st Edition, April 7, 2000

2. Stephen Weinstein, “The Multimedia Internet”, Springer


Reti mobili distribuite

Programma Dettagliato

Obiettivi


Obiettivi del corso sono quelli di fornire: una conoscenza tecnica dettagliata delle tecnologie per reti d'accesso wireless (WiFi, WiMax, Bluetooth, Zigbee), i principi di funzionamento, l’architettura e i protocolli delle reti wireless multihop (reti ad hoc e reti di sensori), le metodologie per l’analisi dei meccanismi d’accesso al canale radio, gli algoritmi distribuiti per la gestione e il controllo delle reti wireless. Il corso inoltre fornisce alcuni strumenti pratici per realizzare un progetto sperimentale su reti ad hoc e reti di sensori mediante alcuni strumenti software liberamente disponibili e dispositivi hardware disponibili in laboratorio su richiesta.


Il corso presuppone la conoscenza dei fondamenti delle reti di telecomunicazione, dei protocolli TCP/IP, e delle basi della teoria delle code.


Programma


1. Tecnologie per reti wireless


1.1. Wi-Fi (Architettura e protocolli delle reti WLAN, specifiche IEEE 802.11, meccanismo d’accesso multiplo, fornato delle trame, sistema di distribuzione, gestione della mobilità),


1.2. Bluetooth (Le specifiche Bluetooth, picocelle e scatternet, accesso al canale, stati dei terminali, formazione delle rete e segnalazione),


1.3. Zigbee (Le specifiche IEEE 802.15.4 e Zigbee alliance, architetture di rete a stella ad albero e mesh, meccanismo d’accesso multiplo),


1.4. WMAN (Lo standard IEEE 802.16 – WiMaX, architettura di rete, modalità Point-To-Multipoint, modalità MESH, accesso al canale e scheduling).


2. Accesso multiplo al canale radio (modelli di analisi)


2.1. Il protocollo Aloha (modello a popolazione infinita, modello a popolazione finita, modello single-buffer)


2.2. Algoritmi di stabilizzazione dell’accesso casuale (Aloha stabilazzato con stima del numero di stazione, algoritmi ad albero)


2.3. Modelli per l’analisi di CSMA (Carrier Sense Multiple Access), CSMA/CD (CSMA with Collision Detect), CSMA/CA (CSMA with Collision Avoidance),


2.4. Reservation Aloha e PRMA,


2.5. Meccanismi a polling (modelli per il calcolo del tempo d’attesa in coda, servizio esaustivo, servizio gated, servizio limitato e round robin)


2.6. Meccanismi di scheduling per sistemi radio (problematiche di segnalazione dello stato delle code, scheduling dipendente dallo stato del canale radio, scheduling per sistemi multiportante).


3. Livello di rete e trasporto per reti mobili


3.1. Meccanismi di gestione della mobilità a livello 2


3.2. Meccanismi di gestione della mobilità a livello rete (Mobile IP, protocolli di micromobilità).


3.3. TCP su wireless (meccanismi di gestione degli errori del canale, soluzioni end-to-end, soluzioni TCP indiretto, soluzione a livello di linea, modelli analitici).


4. Reti ad hoc


4.1. Fondamenti delle reti ad-hoc e delle reti MESH.


4.2. Meccanismi di accesso al mezzo per reti ad hoc (MAC casuali e ordinati.


4.3. Routing per reti ad-hoc (routing proattivo, routing reattivo, routing geografico, meccanismi ibridi).


4.4. Broadcast e multicast nelle reti ad-hoc (modelli per la minimizzazione della potenza, protocolli).


5. Reti di sensori


5.1. Scenari applicativi e differenze con le reti ad hoc mobili


5.2. Fattori che influenzano il progetto e l’implementazione di reti di sensori


5.3. Meccanismi di accesso multiplo e di gestione dei periodi di attività


5.4. Meccanismi e protocolli di instradamento a basso consumo energetico


5.5. Approcci cross-layer


5.6. Trasporto dei dati e meccanismi per la loro aggregazione


5.7. Modelli ed algoritmi per la pianificazione ed il controllo


6. Attività progettuale


6.1. Introduzione agli strumenti hardware e software


6.2. TinyOS


6.3. NesC


6.4. Tossim


6.5. Tool di supporto


6.6. Esempi applicativi e pianificazione dell’attività sperimentale

 

--------------------------------------------------------------------------------
Bibliografia
Bibliografia consigliata

Dispense del corso e altro materiale didattico fornito dal docente sul sito web.


Sistemi distribuiti (con laboratorio)

Programma Dettagliato
Obiettivo del corso è descrivere i principi, gli algoritmi, e le tecnologie fondamentali nella realizzazione di sistemi distribuiti. Il corso risulta quindi strutturato in due parti fortemente complementari. Una affronta i concetti di base relativi ai sistemi distribuiti, descrivendo gli algoritmi e le soluzioni che fanno parte del bagaglio fondamentale di questa materia. In particolare, gli algoritmi presentati vengono discussi in maniera informale, con l'obiettivo di far comprendere allo studente i problemi fondamentali legati allo sviluppo di sistemi distribuiti e le relative soluzioni. Tra i concetti base che verranno affrontati durante il corso vi sono: il naming, la sincronizzazione, la tolleranza ai guasti, le tecniche per la gestione della consistenza e della replicazione, la sicurezza. La seconda parte del corso si concentra invece sulle tecnologie, con particolare attenzione alle primitive di comunicazione offerte dai moderni S.O. e ai più diffusi middleware. Tecnologie di uso comune (es. socket TCP e UDP e Multicast IP in C e Java, RPC, RMI) vengono brevemente riprese (ad uso degli studenti provenienti dall'indirizzo di telecomunicazioni) insieme ai principali middleware (es. J2EE, CORBA, .NET) e alle più recenti novità che emergono dal mondo della ricerca (es. middleware publish-subscribe, sistemi a tuple, architetture peer-to-peer). A naturale completamento del corso, il laboratorio di sistemi distribuiti consente agli studenti di utilizzare le tecnologie sopra menzionate per realizzare applicazioni e algoritmi distribuiti, impiegando le tecniche e i concetti appresi a lezione.

--------------------------------------------------------------------------------
Bibliografia
A.S. Tanenbaum, M. van Steen. Distributed Systems: Principles & Paradigms, 2nd edition. Prentice Hall, 2006 (disponibile anche in italiano). G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems: Concepts and Design (4th edition). Addison-Wesley, 2005. W. Emmerich. Engineering Distributed Objects, J. Wiley and Sons, 2000. B. Eckel. Thinking in Java (4th Edition). Prentice Hall, 2006.


Sistemi informativi per l'impresa

Programma Dettagliato
OBIETTIVI:

Il corso si propone di fornire gli strumenti metodologici necessari per allineare le scelte progettuali informatiche con gli obiettivi delle imprese. A tal scopo, il corso si propone di classificare e organizzare le scelte progettuali fondamentali definendo l’architettura del sistema informativo di un’organizzazione, dal punto di vista hardware, software e infrastrutturale. Tale architettura viene poi approfondita per i fondamentali processi organizzativi di produzione, marketing e finanza e per i processi inter-organizzativi di gestione di clienti e fornitori (e-business). Su questa base, viene fornita una metodologia di analisi e specifica dei requisiti informativi di un’impresa per la messa a punto degli studi di fattibilità dei progetti informatici.


PROGRAMMA DELLE LEZIONI E DELLE ESERCITAZIONI:

Il corso si propone di fornire gli strumenti metodologici necessari per allineare le scelte progettuali informatiche con gli obiettivi delle imprese, definendo l’architettura del sistema informativo di un’organizzazione, dal punto di vista hardware, software e infrastrutturale. Sono in particolare approfonditi i seguenti argomenti:

1. L’architettura funzionale dei sistemi informativi e la struttura dell’impresa. Sistema informativo e sistema informatico: definizioni e richiami teorici. La prospettiva informativa della teoria dell’organizzazione: la teoria decisionale, la teoria transazionale e la teoria basata sui costi di agenzia.

2. Il portafoglio applicativo e i tipi di sistemi informativi: i sistemi di supporto operativo, il sistema informativo direzionale, Internet e sistemi inter-organizzativi. Evoluzione dei sistemi informativi e analisi dell’impatto sui processi organizzativi. I sistemi ERP, il CRM e i datawarehouse, i sistemi direzionali e i sistemi per l’e-business (WIS). Alcuni casi di studio esemplificativi.

3. La relazione fra l’architettura funzionale dei Sistemi Informativi e i componenti tecnologici del Sistema Informatico, in particolare con le architetture client-server a più livelli e le architetture basate su e-service.

4. Metodi di analisi dei requisiti direzionali: il metodo dei fattori critici di successo e gli indicatori chiave (key performance indicators, KPI). Esercizi di definizione e specifica dei requisiti dei sistemi direzionali a partire da schemi di basi di dati e KPI.

--------------------------------------------------------------------------------
Bibliografia
BIBLIOGRAFIA CONSIGLIATA:

G. Bracchi, C. Francalanci, G. M. Motta, “Sistemi Informativi e Aziende in Rete”, McGraw-Hill Libri Italia, 2001.

L. Baresi, C. Francalanci, F.Schreiber, L. Tanca, “Progettazione Integrata di Dati e Funzioni”, Esculapio (Bologna), 2003.

G. Bracchi, C. Francalanci, G. M. Motta, “Sistemi Informativi per l'Impresa Digitale”, McGraw-Hill Libri Italia, 2005.



Economia dei servizi e delle reti

Programma Dettagliato
Obiettivi

Il corso di Economia dei servizi e delle reti ha come oggetto i mercati, le imprese e le politiche pubbliche dei servizi a rete regolamentati (o utilities, quali le telecomunicazioni, l'energia elettrica, il gas naturale) e dei servizi e delle tecnologie dell'informazione (IT) (quali il software e i servizi basati su Internet). Il corso ha tre principali obiettivi formativi, tra loro collegati: (a) illustrare le principali caratteristiche economiche dei servizi a rete e dei servizi e sistemi basati sull'IT; (b) presentare le politiche pubbliche tipiche di tali settori (regolamentazione, antitrust, tutela della proprietà intellettuale, tutela ambientale e tutela dell'interesse generale); (c) fornire una conoscenza dei principali modelli e fatti stilizzati necessari a comprendere sia la struttura e l'evoluzione dei mercati sia le strategie e le prestazioni d'impresa in tali settori. Il fine ultimo è dotare lo studente di basi concettuali ed empiriche per analizzare i mercati dei servizi a rete e dell'IT e per formulare le strategie di impresa in tali mercati.

Programma


Economia dei settori a rete. Monopolio naturale e apertura alla concorrenza. L’interconnessione. L’economia dell’informazione. Differenziazione del prodotto, discriminazione di prezzo, bundling di prodotti complementari. Esternalità dirette e indirette di rete. Standards, compatibilità e lock-in.

La regolamentazione dei settori a rete. I princìpi e le forme della regolamentazione delle utilities. La tutela della concorrenza nelle utilities.

I settori dei servizi di comunicazione e informazione. Analisi della struttura ed evoluzione dei mercati. Caratteristiche economiche e strategie delle imprese: casi aziendali. Economia dell'open source software. Interventi di regolamentazione in Italia.

I settori dell’energia elettrica e del gas naturale. Analisi della struttura ed evoluzione dei mercati. Organizzazione verticale e strategie di crescita delle imprese: il modello multi-utility (casi aziendali). Interventi di regolamentazione in Italia.

--------------------------------------------------------------------------------
Bibliografia
Varian, Shapiro, Information rules, Mc Graw Hill
Rohlfs, Bandwagon effects, The MIT Press
Dispense