Corsi fondamentali
Corsi caratterizzanti il piano
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 dellottimo). 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. DellAmico, 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.
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.
Programma Dettagliato
L'obiettivo del corso è quello di fornire agli studenti i concetti relativi
ai moderni processi di produzione del software ed i principi dellingegneria
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.
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 dellesame.
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
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.
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
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 nellofferta 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 allaccesso 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.
A scelta tra:
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. Lalgoritmo DES e le sue concatenazioni.
Lo standard AES e lalgoritmo Rijndael.
4. Crittografia a chiave pubblica. Lalgoritmo di Rivest, Shamir e Adleman.
Cenni sulla crittoanalisi e sui test di primalità. Firme digitali: lalgoritmo
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 didentificazione: 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
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 alloperatività 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. Laffidabilità
delle componenti hardware, del middleware e delle applicazioni è un requisito
indispensabile per garantire continuità, qualità e sicurezza nellerogazione
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 allaffidabilità
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 dellaffidabilità, 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"
Programma Dettagliato
Obiettivi
Il corso si propone di introdurre le problematiche della sicurezza dellinformazione, 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: larchitettura 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 delloverhead
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 le-business
4.1 Architetture sicure per le-commerce
4.2 Transazioni commerciali sicure: IPSEC, HTTPS, SET e la dual signature
5 Aspetti organizzativi della sicurezza
5.1 Lanalisi 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 danno 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/
Programma Dettagliato
Questo corso ha lobiettivo di introdurre alle problematiche della sicurezza dellinformazione, 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 dellaccesso 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 danno
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
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 nellallocazione 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
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, larchitettura e i protocolli delle reti wireless
multihop (reti ad hoc e reti di sensori), le metodologie per lanalisi
dei meccanismi daccesso 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 daccesso 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 daccesso 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 dellaccesso casuale (Aloha stabilazzato
con stima del numero di stazione, algoritmi ad albero)
2.3. Modelli per lanalisi 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 dattesa 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 limplementazione 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 dellattività sperimentale
--------------------------------------------------------------------------------
Bibliografia
Bibliografia consigliata
Dispense del corso e altro materiale didattico fornito dal docente sul sito web.
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.
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 larchitettura del sistema informativo di unorganizzazione, 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 unimpresa 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 larchitettura del sistema informativo di unorganizzazione, dal punto di vista hardware, software e infrastrutturale. Sono in particolare approfonditi i seguenti argomenti:
1. Larchitettura funzionale dei sistemi informativi e la struttura dellimpresa. Sistema informativo e sistema informatico: definizioni e richiami teorici. La prospettiva informativa della teoria dellorganizzazione: 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 dellimpatto sui processi organizzativi. I sistemi ERP, il CRM e i datawarehouse, i sistemi direzionali e i sistemi per le-business (WIS). Alcuni casi di studio esemplificativi.
3. La relazione fra larchitettura 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.
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.
Linterconnessione. Leconomia dellinformazione. 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 dellenergia 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