PROGRAMMI DEL CORSO DI LAUREA IN Tecnologie web e multimediali a.a. 2012/2013 Algoritmi e strutture dati Docente: Prof. Carla Piazza Crediti: 9 Finalità : Il corso si propone di introdurre ai fondamenti della teoria degli algoritmi, delle strutture dati e all'analisi della complessità computazionale di programmi. Il principale obiettivo del corso è presentare le principali problematiche e tecniche relative al disegno e alla progettazione di algoritmi. Ci si propone inoltre di introdurre i metodi di base utilizzati per stabilire la complessità di programmi e i criteri utilizzati per scegliere e progettare strutture dati. Dopo aver superato l'esame si ritiene che lo studente sia in grado di risolvere algoritmicamente problemi classici e scegliere motivatamente le strutture dati adatte ad ottenere soluzioni computazionalmente efficienti. Sia in grado di porre limiti superiori sufficientemente precisi e indipendenti dall'architettura alla complessità computazionale di programmi di media difficoltà . Programma: 1. Introduzione e nozioni preliminari Introduzione. Elementi di logica e teoria degli insiemi. Alberi e grafi. Matematica discreta e analisi asintotica. Modelli di calcolo per la determinazione della complessità degli algoritmi. Problemi ricorsivi e aspetti algoritmici. 2. Algoritmi di ricerca e ordinamento Algoritmi primitivi di ordinamento e ricerca: selection-sort, insertion-sort, bubble-sort, heap-sort. Algoritmi ricorsivi: quick-sort, merge-sort. Analisi della complessità e limiti inferiori. Algoritmi lineari non basati sul confronto: counting-sort, radix-sort, bucket-sort. Determinazione dell'elemento medio. 3. Strutture dati Strutture dati primitive: liste, pile, code, heap. Algoritmi e strutture dati per la gestione e manipolazione di insiemi: tabelle hash, alberi di ricerca, bilanciamento, red-black alberi e B-alberi. Algoritmi e strutture dati per il problema Union-Find. 4. Algoritmi sui grafi Tecniche di rappresentazione di grafi orientati e non orientati. Algoritmi di visita in ampiezza e profondità . Algoritmi di visita su alberi. Algoritmi per la determinazione di topological-sort, minimum spanning tree (Prim e Kruskal), cammino minimo da una sorgente (Dijkstra). Bibliografia: - Cormen T.H., Leiserson C.E., Rivest R.L, Introduction to Algorithms, MIT Press, Second edition, 2001. (Anche in italiano). Altri riferimenti utili: - A. Bertossi, A. Montresor. Algoritmi e Strutture Dati, 2/ed, Città Studi Edizioni, 2010. - C. Demetrescu, I. Finocchi, G. F. Italiano, Algoritmi e Strutture Dati, 2/ed, McGraw-Hill, 2007. - P. Crescenzi, G. Gambosi, R. Grossi. Strutture di Dati e Algoritmi, Addison-Wesley Pearson, 2006. Modalità d'esame: L'esame consiste di una prova scritta ed un orale. Analisi matematica Docente: Prof. Gianluca Gorni Crediti: 12 Finalità : Introdurre i concetti fondamentali dell'analisi matematica per funzioni di una variabile, curando sia gli aspetti concettuali e teorici sia quelli calcolativi. Programma: Numeri reali, manipolazione delle disuguaglianze, principio di induzione, limiti di successioni e funzioni di una variabile reale, continuità delle funzioni e sue conseguenze teoriche, derivate delle funzioni di una variabile, applicazioni delle derivate, integrali. Bibliografia: M. Bertsch, R. Dal Passo, L. Giacomelli, Analisi matematica, MacGraw-Hill, ISBN: 9788838662348. Seconda Edizione, ISBN 9788838662812 Modalità d'esame: Due compitini scritti alla fine dei due periodi didattici, con orale facoltativo qualora la media sia almeno 18. Modalità alternativa: un singolo scritto più un orale negli appelli fra giugno e febbraio. Maggiori dettagli sono disponibili nel sito del docente. Architettura degli elaboratori Docente: Prof. Pietro Di Gianantonio Crediti: 6 Finalità : Il corso ha lo scopo di illustrare la struttura e il funzionamento di un computer nelle sue diverse componenti. Il percorso didattico inizia con lo studio delle parti elementari che costituiscono un calcolatore e considera componenti sempre più complesse fino ad arrivare allo studio di architetture complete di calcolatori. Programma: - Introduzione: prospettiva storica sulle architetture degli elaboratori, concetti base, livelli d'astrazione nell'analisi di un'architettura. - Reti logiche: porte logiche elementari, algebre booleane, circuiti combinatori d'uso frequente, chip di memoria. - Rappresentazione delle informazioni: sistema di numerazione binario, conversione tra basi, rappresentazione di numeri interi e reali, rappresentazione di caratteri . - Processore: ciclo di fetch-decode-execute, data path, unità di controllo, presentazione dettagliata di un semplice microprocessore, pipeline, processori superscalari, predizione di salto, esecuzione fuori ordine, Intel Core. - Linguaggio Macchina: Evoluzione dei linguaggi macchina, tipi di dati, indirizzamento, tipi d'istruzioni, formati istruzioni, - Input/Output: programmed I/O, interrupt, DMA, dispositivi periferici, collegamenti mediante bus, meccanismi d'arbitraggio e sincronizzazione del bus, architettura di un tipico PC, bus PCI, SCSI, USB, dischi magnetici, RAID, dischi ottici. - Gerarchie di Memoria: meccanismi di funzionamento della memoria cache e della memoria virtuale, paginazione e segmentazione, MMU. - Architetture ad elaborazione parallela: tipologie di calcolatori paralleli, multiprocessori e multicomputer, Interconnessione fra processori, cache coherence, architetture UMA, NUMA, COW e MPP. Bibliografia : Andrew S. Tanenbaum. Architettura dei calcolatori, un approccio strutturato. Pearson, 2006. Modalità d'esame: L'esame si compone di una prova scritta e di una prova orale. Aspetti sociali Docente: Dott. Antonio Piva Crediti: 1 Finalità : Gli obiettivi principali del corso sono: rendere lo studente consapevole del contesto sociale e delle implicazioni etiche conseguenti alle innovazioni tecnologiche nel campo dell'informatica. In particolare il corso prevede la trattazione del Diritto dell'ICT con particolare attenzione alle innovazioni apportate da internet. Scopo è rendere lo studente consapevole delle implicazioni deontologiche della propria attività professionale, nei confronti dei clienti, datore del lavoro e utenti, e responsabilizzarlo sulle conseguenze a tutti i livelli del proprio operato. Finalità è rendere lo studente competente in questa materia e capace di operare negli ambienti lavorativi nel rispetto delle normative vigenti. Programma: Disamina di casi concreti riguardanti la PRIVACY E LA SICUREZZA (anche in riferimento al syllabus della certificazione privacy e sicurezza disponibile nel sito di AICA www.aicanet.it o di CINDI www.cindi.it) La PROPRIETA' INTELLETTUALE e IL DIRITTO D'AUTORE; dalle origini del diritto d'autore alla proprietà intellettuale nella società dell'informazione; la normativa internazionale, europea ed italiana in materia. La tutela giuridica del SOFTWARE: Il diritto d'autore sul software e la sua brevettabilità ; la durata del diritti, i beni oggetto del diritto in particolare il software e le banche dati, le licenze. La tutela delle BANCHE DATI e delle opere multimediali. La SIAE. Diritto all'informazione e nuove tecnologie: dalle testate on-line ai blog. La concorrenza sleale on-line. I DOMAIN NAMES di internet e gli aspetti giuridici; Il DN ed il marchio, analisi di alcuni casi di protezione giuridica ed alcune decisioni dei tribunali italiani. L'utilizzo dei LINK nei Web ed alcuni casi giuridici (link interni ed esterni). Il diritto d'autore nella rete. La CRIMINALITA' INFORMATICA e Il DIRITTO PENALE in INTERNET; la tutela dei beni informatici, la violazione del domicilio informatico, l'accesso abusivo e gli hackers, il danneggiamento informatico, le frodi telematiche, la normativa penale di riferimento. Il GOVERNO ELETTRONICO ED IL NU)OVO CODICE DELL?AMMINISTRAZIONE DIGITALE; LA FIRMA DIGITALE; il documento elettronico e la sua validità giuridica nell'ordinamento italiano; la crittografia: storia, evoluzione, tecniche di sicurezza sulla rete; La riservatezza, l'integrità , l'autenticazione ed il non ripudio; le certification autority riconosciute dal DIGITPA ed i certificati elettronici; le normative italiane ed Europee sulla firma elettronica; firma autografa e digitale a confronto; la data certa nei documenti elettronici. Accenni sulla Carta d'Identità elettronica e la Posta elettronica certificata. L'Informatica nella Pubblica Amministrazione: il piano di E-Government ed il codice dell'amministrazione digitale. Accenni sul Il COMMERCIO ELETTRONICO; le direttive dell'Unione Europea in materia e la normativa italiana; i CONTRATTI conclusi mediante Internet, i contratti a oggetto informatico e i contratti Telematici; la tutela dei consumatori in Internet e le normative di riferimento per i contratti conclusi fuori dai locali commerciali; La PUBBLICITA' in RETE: definizioni e disciplina legale, i banner. Bibliografia: Lucidi predisposti dal docente; Articoli su Mondo digitale, rubrica di ICT e Diritto (scaricabili su www.mondodigitale.net ). Modalità d'esame: Scritto (24 domande chiuse) e Orale. Chi dispone di Certificazioni Sul Diritto dell'ICT dovrà sostenere solamente un breve colloquio orale. Basi di dati Docente: Prof. Angelo Montanari Crediti: 9 Finalità : Obiettivo fondamentale del corso è l'acquisizione dei concetti, delle metodologie e degli strumenti fondamentali nel campo delle basi di dati, con particolare attenzione ai modelli (concettuale, logico e fisico), ai linguaggi (di definizione, di interrogazione e di aggiornamento) e all'architettura dei sistemi per basi di dati. Vengono descritti in dettaglio i linguaggi per la definizione, l'interrogazione e l'aggiornamento dei dati (algebra relazione, calcolo relazionale, SQL). Vengono, inoltre, forniti elementi di progettazione concettuale (analisi e raccolta dei requisiti, costruzione di modelli Entità /Relazioni), logica (ristrutturazione di schemi concettuali, trasformazione di schemi concettuali in schemi logici, normalizzazione dei dati) e fisica (strutture di indicizzazione) di basi di dati. Infine, viene introdotta la nozione di transazione e vengono analizzate le componenti principali di un DBMS. Dopo aver superato l'esame si ritiene che lo studente sia in grado di formalizzare in un linguaggio relazionale operazioni di definizione e manipolazione dei dati espresse in linguaggio naturale e di progettare semplici basi di dati a livello concettuale (costruzione di schemi Entità /Relazioni a partire da insiemi di requisiti espressi in linguaggio naturale), logico (trasformazione di schemi Entità /Relazioni in schemi relazionali, normalizzazione di schemi relazionali) e fisico (definizione degli opportuni indici). Programma: Parte 1 - Concetti di base Ruolo e funzionalità di una base di dati; astrazioni sui dati; modelli concettuali, logici e fisici dei dati; istanze e schemi; indipendenza logica e fisica dei dati; linguaggi per la definizione e la manipolazione dei dati; i sistemi per la gestione delle basi di dati (DBMS); amministratore e utenti di una base di dati; il dizionario dei dati; la struttura generale di una base di dati. Parte 2 - Il modello Entità /Relazioni (ER) Metodologie, tecniche e modelli per il progetto di una base di dati: il ciclo di vita dei sistemi informativi e le metodologie di progettazione di basi di dati; i costrutti di base del modello concettuale Entità /Relazioni (ER): tipi e istanze di entità e relazioni, attributi (semplici, composti, a singolo valore, a valore multiplo, opzionali, derivati) e chiavi (identificatori interni ed esterni, le nozioni di entità debole, entità proprietaria, chiave parziale e relazione identificante), dominio di un attributo e utilizzo dei NULL, vincoli associati alle relazioni (partecipazione e rapporto di cardinalità ), relazioni ricorsive e ruoli, relazioni di grado superiore al secondo, i diagrammi ER; documentazione di schemi ER: tecniche di documentazione, regole aziendali (vincoli di integrità e regole di derivazione); costrutti avanzati del modello ER: specializzazioni e categorie. Modellazione dei dati in UML: i diagrammi delle classi (classi, associazioni, molteplicità , identificatori, generalizzazioni). Parte 3 - Il modello relazionale Nozioni di base, definizione delle relazioni, definizione dei vincoli sulle relazioni (che coinvolgono un'unica relazione o più relazioni), schemi e istanze di una base di dati relazionale, operazioni di aggiornamento delle relazioni, politiche di reazione alle violazioni dei vincoli. Parte 4 - La progettazione delle basi di dati. La progettazione concettuale dei dati: raccolta e analisi dei requisiti, criteri generali di rappresentazione, strategie di progetto, qualità di uno schema concettuale, strumenti CASE per la progettazione dei dati; la progettazione logica dei dati: analisi delle prestazioni su schemi ER, ristrutturazione di schemi ER (analisi delle ridondanze, eliminazione delle gerarchie, partizionamento/accorpamento di entità e/o relazioni, scelta degli identificatori principali), traduzione del modello ER nel modello relazionale; cenni alla teoria della progettazione delle basi di dati relazionali: dipendenze funzionali, ragionamento sulle dipendenze funzionali, scomposizione di relazioni, scomposizioni lossless-join, scomposizioni che conservano le dipendenze, forme normali per gli schemi di relazione (1NF, 2NF, 3NF e BCNF), scomposizioni in 3NF che conservano le dipendenze. Parte 5 - L'algebra relazionale e il calcolo relazionale L'algebra relazionale: le operazioni di base, interrogazioni in algebra relazionale, operazioni derivate, operazioni addizionali, ottimizzazione algebrica, i limiti dell'algebra relazionale; il calcolo relazionale: nozioni di base, calcolo relazionale su domini, calcolo relazionale su tuple con dichiarazioni di range, confronto tra il calcolo relazionale su domini e il calcolo relazione su tuple con dichiarazione di range, il legame tra calcolo relazionale e algebra relazionale. Parte 6 - Il linguaggio SQL La definizione dei dati in SQL; interrogazioni in SQL; istruzioni di aggiornamento in SQL; altre definizioni dei dati in SQL (vincoli di integrità generici, viste, specifica di vincoli di addizionali sotto forma di asserzioni); il DBMS Oracle Express Edition; cenni a SQL e linguaggi di programmazione (trigger, funzioni e procedure). Parte 7 - XML Introduzione a XML, gli elementi XML, gli attributi XML, documenti XML, XML parser, applicazioni di XML, XML e basi di dati, il linguaggio DTD, dichiarazioni di tipo di un documento XML, validità di un documento XML e modalità di validazione, DTD e schemi relazionali, DTD e XML Schema, linguaggi di interrogazione XML, XPath e XQuery. Parte 8 - L'organizzazione fisica dei dati. Memorizzazione dei record ed organizzazione dei file primari: introduzione, strumenti e tecniche per la gestione della memoria secondaria, memorizzazione di file di record su disco, operazioni sui file, file di record non ordinati, file di record ordinati, tecniche di hashing, altre possibili organizzazioni dei file primari, uso della tecnologia RAID per parallelizzare l'accesso a disco. Strutture di indicizzazione dei file: indici ordinati di singolo livello (primari, di clustering, secondari), indici multilivello statici, indici multilivello dinamici che utilizzano B-alberi e B+-alberi, altri tipi di indice (cenni). Parte 9 - Tecnologia delle basi di dati centralizzate. La nozione di transazione: introduzione, proprietà delle transazioni, scheduling e recupero delle transazioni, tecniche di serializzazione, supporto alle transazioni in SQL. Il gestore del buffer: architettura del buffer manager, primitive per la gestione del buffer, politiche di gestione del buffer, relazione tra il gestore del buffer e il file system. Tecniche di controllo della concorrenza: problematiche, architettura, anomalie delle transazioni concorrenti, tecniche basate su viste, conflitti, locking a due fasi (2PL e 2PL stretto) e timestamp, tecniche multiversione, granularità dei dati. Tecniche di controllo dell'affidabilità : concetti di base, architettura del controllore dell'affidabilità , la nozione di memoria stabile, organizzazione del log, gestione delle transazioni, gestione dei guasti. Elaborazione e ottimizzazione delle interrogazioni: i cataloghi di sistema; ottimizzazione delle interrogazioni (rappresentazione interna delle interrogazioni, profili delle relazioni, ottimizzazione basata sui costi); progettazione fisica di una base di dati. Bibliografia: Testi adottati: R. Elmasri, S. Navathe, Fundamentals of Database Systems (6th Edition), Pearson International Education / Addison Wesley, 2010. In alternativa: R. Elmastri, S. Navathe, Sistemi di basi di dati. Fondamenti (sesta edizione), Pearson Italia, 2011. P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di Dati: Modelli e Linguaggi di Interrogazione (terza edizione), McGraw-Hill, 2009. P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di Dati: Architetture e linee di evoluzione (seconda edizione), McGraw-Hill, 2007. Altri testi di riferimento: A. Silberschatz, H. F. Korth, S. Sudarshan. Database System Concepts (5th Edition), McGraw-Hill, 2005. A. Albano, G. Ghelli, R. Orsini. Fondamenti di basi di dati,, Zanichelli, 2005. J.D. Ullman, Principle of Database and Knowledge Base Systems I - II, Computer Science Press, 1989. (Trad. it. Basi di dati e di conoscenza, Gruppo Editoriale Jackson, 1991.) S.Abiteboul, R.Hull, V. Vianu. Foundations of Databases, Addison-Wesley, 1995. C. J. Date. An Introduction to Databases Systems (7th Edition), Addison-Wesley, 2000. Modalità d'esame: Esame scritto e orale Commercio elettronico Docente: Prof. Aggr. Stefano Burigat Crediti: 6 Finalità : Scopo del corso è di analizzare in dettaglio i principali passi, le problematiche da affrontare e le soluzioni esistenti per la progettazione di servizi di commercio elettronico. In particolare, verranno analizzate le diverse dimensioni che è necessario conoscere al fine di sviluppare iniziative efficaci di commercio elettronico: l'acquirente (ad es., stili di acquisto, problematiche di fiducia, problematiche di usabilità ), il fornitore del servizio (ad es., Internet marketing, merchandising, strategie di commercio elettronico), il servizio (struttura dei siti di commercio elettronico attuali e linee di tendenza evolutive), il progetto del servizio (tipiche problematiche da affrontare, strumenti disponibili, linee guida, supporto all'acquirente nella navigazione, ricerca e confronto fra prodotti). Programma: CONCETTI BASE DI COMMERCIO ELETTRONICO Definizione di E-commerce (EC). EC vs. E-business. Pure vs. Partial EC. "Brick-and-mortar" vs. EC. Cenni storici ed evoluzione tecnologica. Tipologie di Commercio Elettronico: Business-to-Business (B2B), Business-to-Consumer (B2C), Consumer-to-Consumer (C2C), Intra-business, altre tipologie. Fattori trainanti del commercio elettronico: la rivoluzione digitale, pressioni sulle aziende e possibili risposte organizzative. Business model. Esempi di business model innovativi. Benefici e limitazioni del commercio elettronico. MERCATI ELETTRONICI Componenti di un marketspace. Tipi di marketspace: storefront, e-marketplaces, information portals. Intermediazione e disintermediazione. Cataloghi elettronici. Aste elettroniche. APPLICAZIONI BUSINESS-TO-CONSUMER (B2C) Viaggi e turismo. Mercato del lavoro online. Mercati immobiliare, assicurativo, azionario. Home banking. On-demand delivery services, e-grocers. La digitalizzazione di prodotti, servizi e processi. Ausili on-line al processo d'acquisto. Problematiche dell'e-tailing. INTERNET MARKETING Il comportamento dei consumatori on-line: tipologie. Caratteristiche personali e demografiche degli utenti Internet. Strategie di personalizzazione e marketing one-to-one. Ruolo delle ricerche di mercato nel commercio elettronico. Metodi per le ricerche di mercato tradizionali ed on-line. Agenti intelligenti. Scopi e motivazioni per la pubblicita' su Internet. Terminologia. Metodi di advertisement. Eventi e promozioni on-line. Valutare l'efficacia della pubblicita' su Internet. APPLICAZIONI BUSINESS-TO-BUSINESS (B2B) Concetti, caratteristiche e modelli di B2B. Sell-side marketplaces. E-procurement. Exchanges. Marketing B2B. SUPPLY CHAIN E COLLABORATIVE COMMERCE Definizione di supply chain. Problemi relativi alla gestione della supply chain. E-supply chain. Collaborative commerce. Tool di supporto alla collaborazione. COMMERCIO ELETTRONICO E WEB 2.0 Infrastruttura tecnologica del Web 2.0, social networks, virtual communities, sostenibilita' di iniziative Web 2.0. MOBILE COMMERCE Dispositivi mobili e wireless. Tecnologie di rete wireless. Motivazioni alla diffusione delle tecnologie mobili. Tipi di applicazioni M-commerce. Mobile marketing e advertising. Servizi location-based. Pagamenti da dispositivo mobile. Benefici e limitazioni del Mobile commerce. Pervasive computing. Caso di studio: NextBus. SICUREZZA NEL COMMERCIO ELETTRONICO Problematiche di sicurezza. Attacchi tecnici e non-tecnici. Sistemi per rendere sicure le comunicazioni (autenticazione, sistemi crittografici, firewall). ASPETTI TECNICI DEL LANCIO DI UN SITO Requisiti per il successo dell'iniziativa. Business model e business case. Opzioni di Housing ed Hosting. Creazione e gestione dei contenuti. Progettazione del sito web: presentazione dei contenuti ed usabilita'. Promozione del sito web. Casi di studio: eBay ed Amazon. Bibliografia: Materiale fornito dal docente. E. Turban, D. King, J. Lang. Introduction to Electronic Commerce, 2nd Edition, Prentice-Hall, 2009. Modalità d'esame: Scritto Complementi di tecnologie web Docente: Prof. Aggr. Ivan Scagnetto Crediti: 9 Finalità : Introdurre lo studente allo sviluppo di applicazioni web lato server ed all'utilizzo di XML e delle sue tecnologie. Programma: Modulo di Tecnologie Lato Server: Introduzione alle tecnologie lato server: funzionamento di un server web, CGI, scripting. Introduzione a PHP con esercizi. Introduzione a Java 2 Enterprise Edition: servlet, JSP, JDBC. Tomcat (installazione, struttura delle directory, file di configurazione, utilizzo, dispiegamento delle servlet). Tecnologie per rendere maggiormente interattive le applicazioni web lato server: AJAX, XAJAX, AjaxTags. Modulo di Tecnologie XML: Introduzione a XML. Linguaggi per la definizione di schemi XML (XSchema). Linguaggi di interrogazione e di modifica per XML (XPath, XQuery) e linguaggio di modifica XQuery Update Facility. Basi di dati native per XML. Linguaggi di trasformazione (XSLT). Programmare con XML: interfacce DOM e SAX, JAXP (Java API for XML Processing). Bibliografia: Modulo di Tecnologie Lato Server: - Materiale didattico disponibile online Vincenzo Della Mea, Luca Di Gaspero, and Ivan Scagnetto. Programmazione Web Lato Server. Apogeo, 2007 Modulo di Tecnologie XML: - Materiale didattico disponibile online - Elliotte Rusty Harold, W. Scott Means. XML in a Nutshell, O'Reilly. - Priscilla Walmsley. XQuery, O'Reilly Modalità d'esame: Progetto assegnato dai docenti e prova orale Comunicazione efficace Docente: Dott. Antonio Piva Crediti: 1 Finalità : Il corso si prefigge di migliorare le capacità degli studenti di esprimersi in modo corretto ed efficace, sia attraverso il canale orale che quello scritto, e di dotarli di strumenti operativi utili a facilitare il loro inserimento nel mondo del lavoro. Programma: Il corso si articolerà in una serie di lezioni, volte a controllare e migliorare chiarezza, efficacia e correttezza degli studenti nella loro espressione orale e in quella scritta. Si analizzeranno le capacità comunicative individuali così come esse emergono in contesti collettivi (ad esempio lettura e presa di parola in pubblico) ed interpersonali (ad esempio preparazione ed esposizione del proprio curriculum vitae, incontri e colloqui di lavoro, etc.). Questo consentirà di evidenziare i punti critici in tali contesti comunicativi e di fornire elementi utili al loro superamento, grazie anche all'intervento di esperti specifici. Si accennerà anche a metodi per filtrare criticamente i messaggi insiti nella comunicazione di massa. Bibliografia: Data la brevità del corso e il suo carattere nettamente operativo la frequenza è necessaria per affrontare l'esame e non può essere sostituita dalla semplice lettura di testi. Tuttavia, si indicheranno materiali aggiuntivi o integrativi agli studenti che desiderino approfondire argomenti specifici. Modalità d'esame: L'esame consisterà in una prova scritta ed eventualmente anche in una discussione orale. In particolare, agli studenti che non supereranno l'esame saranno forniti individuali suggerimenti di miglioramenti specifici. Cultura d'impresa Docente: Dott. Antonio Piva Crediti: 1 Finalità : Gli obiettivi principali del corso sono: rendere lo studente consapevole del contesto sociale e delle implicazioni etiche conseguenti alle innovazioni tecnologiche nel campo dell'informatica e conoscere i princìpi della protezione dei dati personali nella normativa europea ed italiana. In particolare il corso prevede la trattazione del Diritto dell'ICT riguardante la Privacy e sicurezza, con particolare attenzione alle innovazioni apportate da internet, con la finalità di rendere lo studente competente questa materia e capace di operare negli ambienti lavorativi nel rispetto delle normative vigenti. L'Obiettivo è che lo studente conosca l'evoluzione del concetto di privacy e la normativa italiana sulla privacy, in particolare il Codice in materia di protezione dei dati personali, la figura dell'autorità Garante e il Gruppo dei Garanti europei. Lo studente deve comprendere le norme generali che regolano il trattamento dei dati personali e le particolarità di alcuni settori specifici di trattamento; deve essere consapevole degli obblighi di sicurezza richiesti, della redazione del Documento Programmatico sulla Sicurezza, e delle responsabilità e sanzioni previste dal Codice. Lo studente deve conoscere le norme in materia di comunicazioni elettroniche non sollecitate e alcune particolari fattispecie di trattamenti illeciti. Programma: La PRIVACY E LA SICUREZZA (anche in riferimento al syllabus della certificazione privacy e sicurezza disponibile nel sito di AICA www.aicanet.it o di CINDI www.cindi.it) - nozione e sviluppo di privacy: dalla nascita della privacy alla direttiva europea. Anonimato ed identificabilità . - la normativa italiana in materia di dati personali (informativa, consenso, dati sensibili, le sanzioni, il Garante, le responsabilità civili e penali.) e le figure giuridiche previste. - La gestione della sicurezza, le misure minime ed idonee sulla sicurezza, il Documento programmatico della sicurezza. - Disamina di casi concreti (obblighi per gli Internet Service Provider, scuole, videosorveglianza, phishing ecc..) - Le disposizioni applicabili alla rete (informative, consenso, opt in-opt out, logs l'utilizzo delle Pet's e cokies ..) - Le responsabilità e le sanzioni - La tutela della segretezza della posta elettronica nell'ordinamento italiano e negli altri ordinamenti. - Le comunicazioni non sollecitate - Aspetti giuridici dei social network tra opportunità e rischi Accenni sulla sicurezza delle informazioni e le Normative Internazionali: ISO 9001:2008 - Sistema di Gestione della Qualità (applicato al software ed al mondo IT) ISO 27001 - Sistemi di Gestione della Sicurezza delle Informazioni ISO 20000 - Sistemi di Gestione dei Servizi IT BS 10012 - Sistemi di Gestione delle Informazioni Personali BS 25999 - Sistemi di Gestione della Business Continuity Bibliografia: Lucidi predisposti dal docente Articoli su Mondo digitale, rubrica di ICT e Diritto (scaricabili su www.mondodigitale.net) La tutela dei dati personali (NUMERO 9 - Marzo 2004) 10 anni di Privacy NUMERO 22 - Giugno 2007 Sicurezza informatica e privacy nella scuola (NUMERO 26 - Giugno 2008) Aspetti giuridici dei social network tra opportunità e rischi (NUMERO 2 - Giugno 2009) La sicurezza delle informazioni e le Norme ISO 27000 (NUMERO 27 - Settembre 2008) e gli altri articoli su Qualità servizi IT e Business Continuity ISO/IEC 20000: la Norma per la qualità dell'erogazione dei Servizi IT (NUMERO 1 - marzo 2009) Business Continuity: come prevenire i disastri applicando le normative (NUMERO 3 - Settembre 2009) Governance IT: continua evoluzione dei frameworks per gestirla (NUMERO 4 - Dicembre 2011) Responsabilità degli enti e reati informatici (NUMERO 4 - Dicembre 2009) Materiale ed indicazioni presenti nel sito del Garante www.garanteprivacy.it Ebook in pubblicazione redatto dal docente Modalità d'esame: Scritto (24 domande chiuse) e orale Chi dispone della Certificazione su Privacy e sicurezza dovrà sostenere solamente un breve colloquio orale. Interazione uomo-macchina Docente: Prof. Luca Chittaro Crediti: 6 Finalità : Scopo del corso è di introdurre i principi, le metodologie di progettazione e le diverse scelte implementative per la costruzione di software che sia usabile in modo semplice, intuitivo, produttivo ed affidabile dagli utenti a cui è rivolto. Il raggiungimento di questo obbiettivo richiede lo studio di tre diverse tematiche: l'uomo (caratteristiche psicologiche dell'utente); la macchina (strumenti per la realizzazione di interfacce con il mondo esterno); l'interazione (analisi, progetto, valutazione di interfacce uomo-macchina). Oltre a presentare le nozioni di base della disciplina, il corso pone anche l'accento su alcuni sviluppi recenti di particolare importanza, quali le interfacce 3D, il groupware ed i social network. Programma: • Introduzione: Obbiettivi dell'Interazione Uomo-Macchina e sua importanza in diversi settori applicativi. • Aspetti Psicologici dell'Interazione Uomo-Macchina: Psicologia Cognitiva. Canali sensoriali. Limitazioni e aspettative umane nei processi percettivi. Percezione visiva. Percezione auditiva. Percezione tattile. Movimento. La Memoria umana: sensoriale, a breve termine, a lungo termine. Aspetti emotivi. Differenze individuali. Modelli mentali. Metafore. Errori umani: slip e mistake. • Periferiche per l'Interazione Uomo-Macchina: Periferiche per l'inserimento di testo. Periferiche per il puntamento e posizionamento. Periferiche 3D. Periferiche per l'output visivo, auditivo, tattile. Periferiche ed interfacce per utenti disabili. • Modelli e Paradigmi di Interazione Uomo-Macchina: Modelli per caratterizzare le fasi dell'interazione. Aspetti ergonomici dell'interazione. Stili di interazione: dai linguaggi di comando alle interfacce 3D. Interfacce a finestre (WIMP). Progetto dei menu e delle icone. Paradigmi di interazione. Context-aware interaction. • Interaction Design: definizione e processo. User focus. Metodo Personas. Task analysis. Scenari. Navigation design. Screen design. Screen layout. Prototyping iterativo. • Interazione Uomo-Macchina e Ciclo di Vita del Software: Analisi dei requisiti di usabilita'. User-centred design. Usability Engineering. Tecniche di prototyping. Documentazione delle scelte di progetto. • Regole di Design per le Interfacce Utente: Principi. Standard. Guideline. Lo standard ISO 9241. Euristiche. • Valutazione di Usabilita': Scopo della valutazione. Strumenti di registrazione. Osservazione dell'utente. Raccolta di opinioni. Interviste. Questionari. Esperimenti. Valutazione predittiva: KLM. Valutazione mediante esperti: Heuristic Evaluation, Cognitive walkthrough. • Universal design: Principi. Interazione multi-modale. Progettare per una diversita' di utenti. • Assistenza all'utente: Documentazione. Requisiti di un help system. Principali approcci. Interfacce adattative ed adattabili. • Computer-Supported Cooperative Work: Groupware. La comunicazione mediata dal calcolatore. E-mail e sistemi di comunicazione testuale. Videoconferenza. Ambienti collaborativi virtuali. Sistemi per meeting e decision support. Applicazioni ed artefatti condivisi. • Communication Models: La comunicazione faccia a faccia. Spazio personale. Contatto oculare e sguardo. Gesti e linguaggio corporeo. Canali non-verbali. Effetti della comunicazione mediata dal calcolatore. Caso di studio: i social network. • Ubiquitous Computing e Augmented Reality: Definizione ed applicazioni dell'ubiquitous computing. L'interazione nell'ubiquitous computing. Context-aware computing. Cattura automatica di esperienze. Lifelogging. La realta' virtuale: desktop VR, immersive VR, augmented reality. Bibliografia: L. Gamberini, L. Chittaro, F. Paternò. Human-Computer Interaction, Pearson, 2012. Materiali aggiuntivi messi a disposizione dal docente su materialedidattico.uniud.it. Modalità d'esame: L'esame di Interazione Uomo-Macchina si compone di (i) una prova pratica (da svolgere prima della prova scritta), (ii) una prova scritta. Istruzioni dettagliate sulle prove sono disponibili al link: http://users.dimi.uniud.it/~luca.chittaro/STUD/indexIUM.html Matematica discreta Docente: Prof. Giovanna D'Agostino, Prof. Giuseppe Lancia Crediti: 12 Finalità : Fornire concetti e strumenti in aritmetica, combinatorica e algebra lineare. Il corso è diviso in due moduli. L'obiettivo del primo modulo è di fornire competenze teoriche e metodologiche di aritmetica e combinatorica. L'obiettivo del secondo modulo è di fornire competenze teoriche e metodologiche di algebra lineare. Programma: Programma del primo modulo: - Algebra booleana, insiemi e funzioni. Relazioni e equivalenze. Sommatorie. Il principio di induzione. Cenni di calcolo delle probabilità . - Elementi di Combinatorica. Il principio della piccionaia. Numeri di Fibonacci. Il principio di inclusione-esclusione. - Procedure combinatoriche. Problema dei matrimoni stabili. Generazione di tutti i sottoinsiemi/permutazioni e di sottoinsiemi/permutazioni casuali. - Teoria dei grafi. Grafi euleriani e hamiltoniani. Grafi bipartiti. Connessione. Alberi. Grafi orientati e pesati. Il minimo albero di supporto. Accoppiamenti e coperture di vertici. Cliques e insiemi indipendenti. Colorazione di grafi. Aritmetica intera, quoziente e resto, scomposizione in fattori primi. MCD e mcm. Algoritmo di Euclide. Cenni di teoria dei numeri. Numeri primi e fattorizzazione. Programma del secondo modulo: Numeri Razionali, Reali, Complessi; Insiemi finiti e Infiniti e cardinalità di insiemi. Spazi vettoriali, dipendenza ed indipendenza lineare, basi e dimensione. Applicazioni lineari. Matrici, somma, prodotto, inversa e determinante di matrici. Relazione tra applicazioni lineari e matrici. Sistemi Lineari. Autovalori ed autovettori di un'applicazione lineare. Spazi Euclidei. Bibliografia: Per il primo modulo: -Dispensa del docente -Introductory Combinatorics, di R. Brualdi Per il secondo modulo: - Dispense F. Lastaria, M. Saita, Appunti di Algebra Lineare; - Materiale fornito dal docente. Modalità d'esame: La prova scritta è costituita da due parti sul programma del primo e del secondo modulo, rispettivamente. La prova orale è relativa al solo secondo modulo ed è obbligatoria o meno a discrezione del docente. Progetto di siti e portali web Docente: Prof. Aggr. Giorgio Brajnik Crediti: 6 Finalità : Lo studente deve sapere analizzare e progettare una web app, a partire dall'ingegneria dei requisiti all'implementazione del lato client. Pertanto deve conoscere le tecnologie più importanti lato client (quali HTML, CSS, Javascript, AJAX, HTML5), deve sapere come usarle (ad es. per soddisfare requisiti di qualità del codice e di accessibilità dell'interfaccia). Dovrà anche saper padroneggiare una metodologia agile di analisi e sviluppo di siti e applicazioni web. Il corso di focalizza sull'interfaccia utente del sito/applicazione; non riguarda la progettazione "lato server", che viene coperta da altri corsi. Programma: Preliminari 1. Panoramica delle tecnologie web. Analisi dei requisiti Ovvero come elicitare i requisiti, come organizzarli, come saper includere vincoli di usabilità e accessibilità nell'analisi. 1. Approcci iterativi; approcci agili. 2. Requisiti, req. funzionali e non, feature, vincoli di progetto. 3. Analisi del problema; sua definizione; identificazione della causa principale, identificazione dei soggetti interessati; definizione del bordo della soluzione; identificazione dei vincoli. 4. I casi d'uso UML; la loro struttura interna. 5. Il documento di visione. 6. L'analisi degli utenti; i livelli di esperienza; la definizione di scenari e di personaggi d'uso. 7. Le tecniche di focus group, brainstorming, intervista, analisi competitiva. Progettazione concettuale Ovvero come progettare la struttura "profonda" dell'interfaccia. 1. Principi di progetto centrato sull'utente; cenni all'usabilità , ai modelli mentali, al ciclo dell'interazione di Norman. 2. Il progetto concettuale dell'interfaccia utente. 3. La categorizzazione delle informazioni; il card sorting. 4. Tipi di storyboard; i prototipi a bassa fedeltà . 5. User testing con prototipi a bassa fedeltà ; stesura di un rapporto di usabilità . 6. Progettazione della gestione degli errori. Modellizzazione dell'interfaccia utente Come rappresentare in maniera concreta le proprie idee di progetto. 1. Contenuti ed espressione; sostanza e forma; tipologie di contenuti; struttura concettuale del dominio; struttura logica. 2. Tipologie di sostanza dell'espressione; forma dell'espressione. Implementazione Alcune indicazioni su come realizzare l'interfaccia. 1. Accessibilità : definizioni, tecnologia assistiva, motivazioni. 2. La conformità allo standard WCAG 2.0 e la legge "Stanca". 3. I principi ARIA e le buone pratiche in Javascript. Bibliografia: 1. Creare siti web multimediali, G. Brajnik e E. Toppano, Pearson Education Addison-Wesley, 2007. 2. Managing Software Requirements, D. Leffingwell e D. Widrig, II edition, Addison-Wesley 2003; i capp. 1, 2, 3, 5, 6, 8-13, 14-16, 18, 26 3. Web Accessibility: web standards and regulatory compliance, J. Thatcher et al., FriendsofEd, 2006; i capitoli da 4 a 15. 4. materiale didattico su http://users.dimi.uniud.it/~giorgio.brajnik/dida/psw/corso/newwiki/doku.php?id=start Modalità d'esame: E' necessario svolgere dell'attività pratica che consiste nello svolgimento, in maniera autonoma, singolarmente o in un gruppo di non più di 3 persone, di attività di analisi o progettazione di siti web già esistenti, in corso di sviluppo o ancora da realizzare. In particolare i possibili tipi di attività includono: - analisi tecnica di accessibilità di siti esistenti, concordati con il docente; - valutazione di usabilità mediante user testing di siti esistenti, concordati con il docente; definizione di requisiti per siti/applicazioni concordati con il docente; - modellizzazione concettuale di una interfaccia utente per un sito/applicazione concordati con il docente; - pianificazione e svolgimento di un test funzionale e/o di carico di un'applicazione concordata con il docente. Affinché sia possibile sostenere l'esame orale è necessario che il/la candidato/a presenti almeno 3 relazioni, il cui formato è specificato a lezione. Ciascuna delle relazioni deve essere originale, pena l'annullamento dell'esame e l'impossibilità di sostenerlo nell'anno accademico. Ogni relazione deve essere scritta in un unico file XHTML, con o senza Javascript, con eventuali immagini, accessibile al livello AA WCAG2.0. Inviare un file in formato zip o tgz al docente almeno 2 giorni prima della prova orale. Presentarsi all'esame orale con una copia cartacea delle relazioni. L'esame scritto, obbligatorio, concorre per un punteggio che va da 18 a 30. Chi riceve meno di 18 deve ripresentarsi. L'esame orale, obbligatorio, fa media con lo scritto e consente di ottenere un voto complessivo: insufficiente o da 18 a 30 e lode. La valutazione dei 3 progetti obbligatori concorre ad un punteggio aggiuntivo in trentesimi che va da -2 a 3. Programmazione e laboratorio Docente: Prof. Stefano Mizzaro, Prof. Paolo Coppola Crediti: 12 Finalità : Si vogliono introdurre le nozioni di base della programmazione: i concetti di algoritmo, programma e linguaggio di programmazione, la scrittura di programmi, l'uso delle API di un linguaggio. Lo strumento usato è il linguaggio di programmazione Java. Programma: * La programmazione strutturata. I mattoni di base di un programma Java (e della quasi totalità dei linguaggi di programmazione): variabili, tipi, espressioni, strutture di controllo (sequenza, selezione, iterazione), array, metodi, ricorsione. * Tipi di dati astratti e occultamento delle informazioni. Come costruire programmi più grandi e complicati, ma comunque modificabili, estendibili, comprensibili, ecc.: il concetto di Tipo di Dato Astratto (TDA) e i principi dell'incapsulamento e dell'occultamento delle informazioni. * I fondamenti della programmazione Orientata agli Oggetti (OO). La programmazione OO come un'evoluzione dai TDA. I concetti di: oggetti, classi, istanze, scambio messaggi, eredità e polimorfismo (cenni). Alcuni aspetti specifici della programmazione OO in Java: classi astratte, interfacce, package. * Le API (Application Programming Interface) del Java. Le "librerie" da usare per scrivere programmi non banali: per la gestione dei file, per la costruzione di interfacce utente grafiche, per implementare applet. * Teorie della computabilità e della complessità (cenni). I concetti di funzione computabile (ovvero: che cosa può fare un programma?) e di complessità computazionale (ovvero: come valutare l'efficienza di un programma, in termini di velocità di esecuzione, in modo teorico). Bibliografia Il testo principale su cui si basano quasi tutte le lezioni teoriche è: * S. Mizzaro. Introduzione alla programmazione con il linguaggio Java. Franco Angeli, Milano, 3a edizione, 2001. ISBN 88-464-1696-1. Per le esercitazioni di laboratorio ci si baserà su: * P. Coppola, S. Mizzaro. Laboratorio di programmazione in Java, Apogeo, 2004, ISBN: 88-503-2145-7. A lezione verrà segnalato o fornito altro materiale (lucidi, pagine Web, dispense, altri testi consigliati). Modalità d'esame: Scritto (o prove di accertamento durante l'anno), attività pratica in laboratorio, progetto (opzionale) e orale. Programmazione orientata agli oggetti Docente: Prof. Vitaliano Milanese Crediti: 6 Finalità : Il corso di Programmazione Orientata agli Oggetti intende affrontare le problematiche più significative del paradigma ad oggetti inteso quale estensione del paradigma imperativo. Punti chiave saranno quindi le trattazioni delle diverse forme di astrazione (procedurale, formalizzazione dello stato, modellazione di strutture dati, interazione fra processi) che sono legate allo sviluppo di programmi. Considerata la specificità del corso di laurea, particolare attenzione verrà altresì rivolta allo sviluppo di applicazioni destinate alla realizzazione di interfacce utente e alla manipolazione di informazioni grafiche e immagini. La discussione di tali aspetti verrà sviluppata mediante l'analisi di problemi e la delineazione di soluzioni. Al fine di disporre di un riscontro operativo, verrà utilizzato un linguaggio di programmazione ad oggetti, di cui saranno preventivamente analizzati gli aspetti basilari. Programma: Concetti e metodologie di programmazione. Classi, oggetti, metodi, messaggi. Protocollo di specifica per le classi e loro realizzazione mediante incapsulamento di variabili e metodi. Istanzazione di classi su oggetti. Analisi di progettazione: identificazione delle componenti di un problema, definizione delle loro responsabilità e funzionalità , individuazione delle interazioni fra componenti, specifica dei relativi protocolli. Eccezioni e loro gestione. Ereditarietà e polimorfismo: gerarchie di classi, classi astratte e interfacce, classi interne; riscrivibilità di metodi in gerarchie di classi e loro selezione dinamica. Specializzazione e sostituibilità di implementazione. Confronto fra ereditarietà , aggregazione e delega. Pattern di progettazione: singleton, factory, chain of responsabilità , decorator. Caratterizzazione di ambienti a classi per lo sviluppo di elaborazioni grafiche o di immagine. Strumenti per lo sviluppo di interfacce utente di tipo grafico. Linguaggio Java. Caratteristiche e costrutti principali del linguaggio. Realizzazione di classi, interfacce e classi astratte. Tipi, variabili, metodi, messaggi; specifiche statiche e dinamiche, livelli di protezione per dati e metodi. Classi parametriche. Costruttori e istanzazione di oggetti. Ereditarietà : costruzione di sottoclassi e polimorfismo. Classi interne: tipologie e utilizzo. Eccezioni e loro gestione. Thread: definizione, uso, sincronizzazione. Eventi e ascoltatori di evento in relazione ad applicazioni grafiche. Confronto tra le funzionalità grafiche offerte dai package AWT e Swing in relazione ai processi di visualizzazione. Impiego del package Swing per la realizzazione di interfacce grafiche: classi per la realizzazione di finestre, pannelli, controlli e menu. Classi per l'impiego di strutture dati. Classi per gestione di file di oggetti e di immagine. Bibliografia: B.Eckel Thinking in Java, voll. 1-3 Pearson - Prentice Hall (2006) S.Mazzanti, V.Milanese Programmazione di Applicazioni Grafiche in Java APOGEO (2006) V.Milanese Problemi d'Esame: Programmazione Orientata agli Oggetti DIADE (2009) Modalità d'esame: Scritto + Orale Psicologia della comunicazione Docente: Prof. Tiziana Magro Crediti: 6 Finalità : Il corso si propone di fornire agli studenti una conoscenza di base sullo sviluppo della Psicologia della Comunicazione e dei suoi metodi. Programma: Gli obiettivi del corso saranno caratterizzati dallo studio dei concetti di base della comunicazione: comprensione e produzione dei messaggi, codici visivi e verbali, comunicazione efficace, comunicazione persuasiva, comunicazioni di massa. Saranno approfonditi anche temi della psicologia cognitiva, dei processi emozionali e motivazionali e dei principali processi psicosociali che regolano l'interazione tra l'individuo e il suo ambiente sociale. Nelle lezioni di tipo teorico gli argomenti sono trattati nei loro aspetti generali. Lo studente li dovrà poi approfondire utilizzando il libro di testo e le letture suggerite. Lo studio della disciplina vedrà la teoria integrata alla pratica, con l'inserimento di esercitazioni o semplici esperimenti che metteranno in luce come i risultati ottenuti trovino riscontro e/o applicazione anche in situazioni di vita quotidiana. Prerequisiti: conoscenza della lingua inglese. Bibliografia: a. Anolli L., Fondamenti della comunicazione, Bologna, Il Mulino, 2006. b. Magro T., Muffolini E. Fondamenti di Psicologia Generale - vol. 1 - Milano, LED Edizioni, 2011 (nuova edizione). Solo capitoli: 2, 3, 6, 7, 8,10. c. Un testo a scelta, tra quelli indicati: - Pravettoni G. Web Psychology, Milano, Guerini, 2002. - Roversi A. Introduzione alla comunicazione mediata dal computer, Bologna, Il Mulino, 2004. - Riva G. The sociocognitive psychology of computer-mediated communication: the present and future of technology-based interactions. Cyberpsychol Behav, Vol. 5, No. 6. (December 2002), pp. 581-598. - Stern S.E.,Mullenix J.W, Yaroslavsky I, Persuasion and social perception of human vs.syntetic voice across person as source conditions, in Journal of Experimental Social Psychology, 38, 6, pp. 556-568, 2006. - Kruger J., Epley N., Perker J. e Ng Z.W., Egocentrism over e-mail: Can you communicate as well as we think? In Journal of Personality and Social Psychology, 89,pp. 925-936, 2005. Gli studenti non frequentanti dovranno riferirsi esclusivamente allo studio dei testi sopra indicati. Modalità d'esame: L'esame si svolgerà in forma scritta e avrà la durata di due ore; seguirà l'integrazione orale. Gli esami devono essere verbalizzati entro sei mesi dalla sessione di esame in cui sono svolti e non si accettano deleghe per la registrazione. La prova scritta consisterà in una serie di domande aperte. La risposta dovrà essere della lunghezza comunicata al momento della prova e dovrà contenere una definizione del tema richiesto, un'eventuale elencazione delle caratteristiche salienti dello stesso e, se ritenuto rilevante, delle esemplificazioni. E' prevista un'integrazione orale solo per gli studenti che abbiano superato l'esame scritto su richiesta del docente che necessiti di una migliore comprensione del contenuto della prova e per dirimere eventuali dubbi o dello studente stesso. Reti di calcolatori Docente: Prof. Marino Miculan Crediti: 9 Finalità : Scopo del corso è introdurre i concetti fondamentali delle moderne reti di calcolatori, e fornire allo studente le necessarie conoscenze per affrontare l'analisi e lo studio di una rete. In particolare verranno presentate le caratteristiche generali delle reti, i modelli ISO/OSI e TCP/IP, e le problematiche affrontate dai principali protocolli ad ogni livello di questi modelli. Infine verranno introdotte le principali problematiche di sicurezza delle reti di calcolatori, e relative soluzioni. Programma: - Introduzione alle reti di calcolatori Reti LAN, WAN, MAN. Internetworking. Internet. Protocolli. Modello ISO/OSI. La suite TCP/IP. - Dati e Segnali Segnali analogici e digitali; spettro e suo significato; larghezza di banda; rappresentazione in bit dei valori del segnale digitale. Deterioramento del segnale; Velocità di trasferimento; Teoremi di Nyquist e Shannon per la capacità del canale. Prestazioni: larghezza di banda, throughput, latenza (ritardo), prodotto banda-ritardo, jitter. Trasmissione dei dati Conversione digitale-digitale; Codifica di line. Campionamento: teorema di Nyquist e sua interpretazione, frequenza di campionamento; filtraggio di segnali (cenni); quantizzazione e codifica; modulazione e demodulazione Delta; trasmissione parallela e seriale: trasmissione seriale sincrona, asincrona e isocrona. Conversione segnale digitale-analogico. Multiplexing e della diffusione; Strategie di occupazione della banda del canale trasmissivo. Mezzi trasmissivi: doppino, cavo coassiale, fibra ottica; etere: onde radio, microonde, infrarossi. Commutazione: struttura tipica di una rete, switch. Commutazione di circuito. Commutazione di pacchetto. Reti a circuito virtuale. Architettura banyan. Reti tradizionali: trasporto di voce e dati (cenni); utilizzo della capacità del doppino nel protocollo ADSL. - Rilevamento e correzione degli errori Aritmetica modulare; codici a blocchi: distanza di Hamming, distanza minima; codici lineari: distanza minima; codice a parità . Codici di Hamming. Codici ciclici. Codici a controllo di somma. Funzioni di controllo nello strato di collegamento Framing. Controllo del flusso e degli errori. Protocollo semplice e stop-and-wait. Protocolli per canali con rumore. Comunicazione bidirezionale e piggyback delle informazioni di controllo. Accesso singolo: HDLC e PPP (cenni). Accesso multiplo casuale: ALOHA, ALOHA a intervalli, CSMA, CSMA-CD, CSMA-CA; accesso multiplo controllato: prenotazione, sondaggio, testimone; accesso multiplo per canalizzazione: FDMA, TDMA, CDMA con regole su struttura, proprietà e costruzione dei codici. - LAN cablate e senza fili Ethernet: formato del frame, indirizzi e casting dei destinatari, vincoli su lunghezze di frame e cavo, protocolli 10Base, hub, bridge e switch, modalità full-duplex, ethernet veloce e autonegoziazione; protocolli 100Base, 1000Base e requisiti sullo strato fisico. IEEE802.11: architettura ad-hoc, di base con punto d'accesso ed estesa, coordinamento centralizzato e distribuito, contesa, tipi di frame, indirizzamento, nodi nascosti, tipi di strato fisico. - Protocolli di rete Indirizzamento logico. Indirizzamento IP. Maschere. Subnetting e supernetting. CIDR. NAT. IPv4: obiettivi, motivazioni. Funzione dei router. Proprietà di IP, posizione rispetto agli altri protocolli. Formato del datagramma IPv4. Frammentazione. IPv6: motivazioni, caratteristiche extra rispetto a IPv4. Tecniche di transizione da IPv4 a IPv6. Protocolli ancillari ARP, RARP. BOOTP e DHCP. ICMP: tipi di messaggi, uso per notifica errori, uso per analisi della rete: ping e traceroute. IGMP: gruppi multicast. Consegna e instradamento. Tavole di routing. Routing gerarchico. Strumenti netstat e ifconfig. Protocolli di routing. Routing intra-dominio. Vettore delle distanze. RIP. Calcolo spanning tree. OSPF. Routing inter-dominio. Vettore dei percorsi. BGP. Routing multicast. Differenze con unicast e broadcast, applicazioni. Instradamento multicast: alberi basati sulla sorgente, alberi condivisi sul core router. Protocolli di routing multicast (cenni). - Protocolli di trasporto Indirizzamento di processo, servizi connection-oriented affidabili. Porte, servizi. Modello client/server, porte ben note, porte registrate, porte effimere. Socket. Comunicazione a datagrammi connectionless best-effort: UDP. Caratteristiche, formato header, funzionamento. Esempio di client e server UDP in C. Comunicazione a flusso connection-oriented affidabile: TCP. Caratteristiche, segmenti TCP, numero di sequenza, numero di riscontro. Connessioni TCP. Apertura attiva, passiva; vulnerabilità SYN flooding. Trasferimento dati. Chiusura attiva, passiva. Diagramma di stato di TCP. Controllo del flusso in TCP. La finestra scorrevole. Gestione degli errori, ripetizioni, arrivi fuori ordine. Esempio di client e server TCP in C. Protocollo SCTP: caratteristiche, applicazioni, differenze con TCP. Esempi di protocolli su SCTP. Flussi multipli, multihoming. Struttura dei pacchetti SCTP, chunk di dati e di controllo. Associazione a quattro passi con cookies. Sliding window in SCTP. - Il controllo della congestione Parametri del traffico, funzionamento del router. Ritardo e throughput. Controlli proattivi, e misure reattive. Controllo della congestione in TCP. Calcolo della congestion window. Algoritmi di congestion window. Controllo di congestione nei router. Algoritmo RED. Cenni alla qualità di servizio. Gestione del traffico con schedulazione. Algoritmo dell'imbuto per limitare il jitter. - Protocollo DNS Funzionamento dal punto di vista del client. Struttura gerarchica dei domini, FQDN e PQDN. Completamento. Zone e server di zona. Deleghe. Root name servers. Risoluzione ricorsiva, iterativa. Caching. Name server locale. Struttura dei messaggi DNS di richiesta e di risposta. Protocolli di trasporto per DNS: UDP, TCP, vantaggi e svantaggi. Autorità di assegnazione dei nomi di dominio: ICANN, e ISP locali. - Introduzione alla sicurezza Aspetti generali. Goal di sicurezza: la triade CIA. Metodologia generale per la sicurezza. Costi della sicurezza. Tipi di attacchi. Attacchi passivi (eavesdropping, traffic analysis) e attivi (masquerade, modify, replay, DoS). Servizi di sicurezza: autenticazione, controllo di accessi, confidenzialità , integrità , non-ripudio, disponibilità . Meccanismi di sicurezza. I modello del canale insicuro (Dolev-Yao). Collocazione dei meccanismi di sicurezza ai vari livelli dello stack OSI. - Cenni di crittografia. Definizione dei concetti fondamentali. Tipo di sicurezza: assoluta, computazionale. Principio di Kerckhoff. Attacchi brute-force, analitici. Crittografia a chiave simmetrica, cifrari AES, RC4. Cifratura a chiave pubblica, cifrario RSA. Autenticazione e integrità dei messaggi Autenticazione con cifratura simmetrica, con MAC. HMAC: progetto generale, struttura, dimensioni, utilizzo. Esempio: sicurezza nel wireless: WEP, attacco a compleanno, WPA e WPA2 con TKIP. Firme digitali. Firme digitali dirette; firme digitali arbitrate. Algoritmo di firma RSA, con verifica. Servizi di sicurezza per email. PGP: servizi offerti, funzionamento, chiavi di sessione, chiavi pubbliche, web of trust. S/MIME: uso di certificati X.509. Posta Elettronica Certificata: servizi implementati, funzionamento. - Autenticazione di entità Meccanismi "something you know", "something you have", "something you are". Autenticazione con password. Protocolli di autenticazione. Chiavi di sessione. Attacchi replay, contromisure. Versioni con cifratura simmetrica, asimmetrica. Autenticazione a chiave simmetrica. Protocollo Needham-Schroeder a cifratura simmetrica. Kerberos. Gestione delle chiavi simmetriche. Algoritmo Diffie-Hellman per la creazione di chiavi condivise. Attacco man-in-the-middle, contromisura con messaggi autenticati. Autenticazione a chiave pubblica. Protocolli per mutua autenticazione con chiave pubblica (asimmetrica). Protocollo di Needham-Schroeder-Lowe. Distribuzione delle chiavi pubbliche. Certificati. X.509: funzionamento, creazione dei certificati, uso e revoca dei certificati (CRL). Certification authorities, gerarchie di CA, validazione di certificati in gerarchie di CA. PKI. Procedure di autenticazione in X.509. - Sicurezza ai livelli di trasporto. La suite SSL. Protocollo di handshaking, di trasporto. Formato dei pacchetti. Tipologie di chiavi usate, limitazioni. Metodi di scambio di chiavi. TLS e differenze con SSLv3. Porting di applicazioni a SSL: principali API. - Sicurezza a livello rete. La suite IPSec. Modi di funzionamento tunnel/trasporto. Protocolli AH, ESP, in modo trasporto e tunnel. Servizi di sicurezza offerti, funzionamento. Security association. Security Policy. Gestione delle chiavi in IPSec: manuale, automatica. Il protocollo IKE: Oakley, ISAKMP. Esempi di scambio ISAKMP: main mode a chiave precondivisa, a chiave pubblica; aggressive mode a chiave pubblica. Virtual Private Networks: definizione, servizi di una VPN, applicazioni. Protocolli usati per implementare VPN (PPTP, L2TP/IPSec). - Sicurezza dell'accesso ai sistemi Il modello del controllo di accesso. Intrusion Prevention Systems, Intrusion Detection Systems. Firewall. Filtraggio mediante proxy. Bibliografia: - Forouzan, Behrouz, "Reti di Calcolatori e Internet". McGraw-Hill, 2008. Forouzan, Behrouz, "Cryptography and Network Security". McGraw-Hill International Edition, 2008. Modalità d'esame: Esame scritto obbligatorio, seguito possibilmente da esame orale Sistemi Multimediali e Laboratorio Docente: Prof. Elio Toppano Crediti: 12 Finalità : Il corso ha lo scopo di fornire le conoscenze di base di tipo concettuale, metodologico e tecnico per descrivere, analizzare, confrontare, progettare, realizzare e valutare prodotti e sistemi ipermediali digitali. Programma: Tipi di documenti elettronici: testi, ipertesti, multimedia e ipermedia. Ipermedia dinamici e adattativi. Modelli concettuali dei documenti elettronici (Dexter, CMIF, AHM). Analisi strutturale di un ipermedia: contenuto, navigazione, presentazione, interazione. Classificazione dei componenti multimediali. Tipi di testi. Rappresentazione digitale dei testi. Elementi di macro e micro-tipografia. Scrittura di testi per il web: linee guida. Tipi di immagini. Rappresentazione digitale delle immagini: immagini raster e vettoriali, spazi colore (RGB, HSL, YCbCr, CIE 1931, CIELab) , teoria strutturale del colore. Gestione digitale del colore. Elaborazione delle immagini raster. Struttura compositiva visuale: layout, griglie, moduli. Elementi di estetica della apparenza e della interazione. Tipi di suoni. Rappresentazione digitale del suono. Analisi spettromorfologica dei suoni. Condotte di ascolto. Elaborazione del suono nel dominio del tempo e della frequenza. Montaggio sonoro. L'audiovisivo: relazioni tra suono e immagini. Animazioni e video. Le animazioni in Flash. Tecniche di elaborazione video. Progettazione di ipermedia: selezione e orchestrazione di media eterogenei. Il linguaggio SMIL 2.0. Tecniche di compressione dell' informazione. La famiglia di standard MPEG-x. Metadati e ontologie per l'annotazione dei prodotti multimediali. Applicazioni multimediali in rete. Bibliografia: G. Brajnik, E. Toppano. Creare siti web multimediali. Fondamenti per l'analisi e la progettazione. Pearson, Addison Wesley, 2007. Lucidi delle lezioni e documenti/articoli da scaricare dal web. Modalità d'esame: L'esame consiste in una prova scritta e nella realizzazione di un progetto pratico sviluppato in Flash. Sistemi operativi Docente: Prof. Marina Lenisa Crediti: 6 Finalità : I sistemi operativi sono parte essenziale di un sistema di calcolo. Nella maggior parte dei casi, essi implementano la vera piattaforma sulla quale si svolge tutta l'attività di analisi, sviluppo, implementazione ed esecuzione dei sistemi software, incapsulando ed astraendo dal sistema hardware sottostante. È pertanto necessario che uno studente di Informatica possieda le basi per comprendere le principali problematiche relative all'efficace utilizzo (da utente, da progettista, da programmatore, da amministratore) di un sistema operativo moderno. Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni concetti fondamentali relativi ai sistemi operativi e alle loro funzionalità primarie (gestione dei processori, della memoria e dei dispositivi di ingresso/uscita). Inoltre verranno illustrate tecniche di programmazione concorrente e gli aspetti concernenti il calcolo parallelo e distribuito. Programma: 1. Aspetti generali: * ruolo del sistema operativo (SO) in un sistema di calcolo; * evoluzione dei SO; tipi di SO (batch/interattivi, time-sharing/dedicati, real-time, paralleli, distribuiti, sistemi embedded...); * richiami sull'architettura di un sistema di calcolo (livelli di esecuzione delle istruzioni, gestione delle interruzioni, gestione dell'I/O); * il SO come gestore di risorse: processi, memoria, dispositivi, file, interazione con l'utente; * il SO come macchina virtuale: il nucleo, le chiamate di sistema; * struttura di un sistema operativo (monolitico, a livelli, macchine virtuali, exokernel, microkernel client-server); * esempi: Unix tradizionale, Linux, Solaris, Mach, Windows. 2. Processi e Thread: * il concetto di processo: definizione e ruolo, il descrittore di processo; * la manipolazione dei processi: la creazione/terminazione di un processo, grafo degli stati di un processo, la commutazione di contesto, lo scheduling di processi; * i processi leggeri (threads): modello a thread, thread a livello utente vs. a livello kernel, soluzioni ibride, thread pop-up, passaggio da thread singolo a multithread; * ruolo del nucleo: gestione interruzioni e traps, operazioni di wait e signal su condizioni di attesa; * lo scheduling dei processori: concetti di base, criteri di scheduling, algoritmi di scheduling, scheduling di sistemi a multiprocessore, scheduling real-time. 3. Programmazione concorrente: * race condition e sezioni critiche; * mutua esclusione; * sincronizzazione tra processi e memorie condivise; * scambio messaggi; * primitive di comunicazione e sincronizzazione: semafori, mutex, monitor, scambio di messaggi; * problemi classici: produttore/consumatore, filosofi, lettori/scrittori, barbiere; * stallo: definizione, modelli per lo stallo, identificazione, prevenzione. 4. Gestione della memoria: * gerarchie di memoria: registri, cache, memoria centrale, memoria virtuale, dischi; * il binding degli indirizzi, spazi logici e fisici di indirizzamento, la rilocazione; * tecniche di allocazione: contigua, la paginazione, la segmentazione; la frammentazione; * la memoria virtuale: paginazione a richiesta, algoritmi di sostituzione delle pagine, il thrashing, il modello Working set. 5. Input/Output: * tipi di dispositivi di I/O - principi dell'hardware di I/O; * gestione a basso livello dei dispositivi di I/O - PIO, DMA, DVMA; * il trattamento delle interruzioni, i driver di I/O - I/O bloccante, non bloccante, asincrono - interfaccia per le applicazioni; * i dischi - algoritmi di schedulazione dei dischi. 6. Il file system: * il file, attributi, operazioni, struttura fisica; * metodi di accesso sequenziale, diretto, a indice; * le directory e la struttura logica di un file system: piatta, gerarchica, a grafo; * la protezione; la consistenza; * implementazione dei file system: organizzazione, allocazione e gestione spazio libero, backup e restore; * struttura di un disco: gestione delle partizioni, gestione delle aree di swap; * il caso di Unix: UFS, EXT2. Tabelle in kernel. Il Virtual File System. Risoluzione dei nomi in inode; * operazioni su dischi, partizioni e file system; * cenni ai journaled file system. Bibliografia: - Trasparenze usate in aula dal docente - A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi (ottava ed.). Pearson, 2009. - A. Tanenbaum, I moderni sistemi operativi (terza ed.). Pearson (Prentice Hall), 2009. Modalità d'esame: Prova scritta + prova orale facoltativa Statistica applicata Docente: Prof. Paolo Vidoni Crediti: 6 Finalità : L'obiettivo del corso è introdurre lo studente a quelli che sono i concetti fondamentali della Statistica descrittiva e inferenziale, quale strumentazione di base per l'analisi dei dati e lo studio dei fenomeni aleatori. Tali nozioni verranno presentate sottolineando l'ambito delle applicazioni pur senza tralasciare gli aspetti formali. Programma: 1) Statistica descrittiva: caratteri statistici; serie, seriazioni e distribuzioni di frequenza; indici di posizione e di variabilità . 2) Calcolo delle Probabilità : probabilità elementare; variabili casuali; modelli probabilistici; variabili casuali multivariate e convergenza. 3) Inferenza statistica: stima puntuale; intervalli di confidenza; verifica di ipotesi. Bibliografia: - F.M. Stefanini, Introduzione alla Statistica applicata con esempi in R. Pearson Education, 2007. - S.M. Iacus, Statistica. McGraw-Hill, 2006. - S. Borra e A. Di Ciaccio, Statistica. Metodologie per le scienze economiche e sociali. McGraw-Hill, 2008. - G. Cicchitelli, Probabilità e Statistica. 1a ed., Maggioli Editore, 1984; 2a edizione, 2001. Modalità d'esame: L'esame consiste in una prova scritta seguita, per i sufficienti, da una prova orale facoltativa. Tecnologie web e laboratorio Docente: Prof. Elio Toppano Crediti: 9 Finalità : Il corso si propone di avviare gli studenti alla comprensione del funzionamento della rete Internet e dei suoi servizi. Vengono trattate le principali tecnologie Web e linguaggi di sviluppo. La preparazione degli studenti è consolidata dalle attività di laboratorio e dalla realizzazione di un progetto di sviluppo di un sito Web. Programma: WWW, risorse, documenti, sistemi web, cenni storici, il W3C, i principi fondamentali, risorse, relazioni, dati, media e codifiche. Metadati, oggetti, identificatori, URI, URL, anatomia degli URL, WWW come servizio di rete, reti di calcolatori, HW di rete, collegamento broadcast e point to point, classificazione in base alla scala, sw di rete, gerarchie di protocolli, progettazione degli strati, servizi orientati alla connessione e senza connessione, affidabili e non, primitive di servizio, modello ISO/OSI (tutti gli strati), modello TCP/IP (tutti gli strati). DNS e posta elettronica. DNS name space, interrogazione ricorsiva, architettura e servizi di un sistema di posta elettronica, RFC 822, MIME, Message Transfert SMTP, POP3 e IMAP. HTTP, URL in dettaglio, fondamenti dell'http, struttura dei messaggi, GET, POST, HEAD, PUT, DELETE, TRACE, Status Codes, Header più in dettaglio (general, Response, Entity, Mime), Caching, proxy http, il problema della mancanza di stato, i cookie. Il Client, plugin, applicazioni helper, il Web server. Documenti Web statici e dinamici, esempi (php, jsp, asp), Java Servlet, Modello a tre strati, Model View Controller, esempi di framework di sviluppo di applicazioni Web, cenni di XML/XSLT, Template programming, i template di Wordpress, Api programming, Javascript, DOM, AJAX, esempi. Durante le ore di Laboratorio di Tecnolgie Web verranno trattati i seguenti linguaggi: XML, xHTML, CSS Bibliografia: Vito Roberto, Paolo Omero, Alessio Gugliotta, Marco Frailis, 2005, Introduzione alle Tecnologie Web, McGraw-Hill editore, 427 pagine. Sito Web di riferimento: http://www.ateneonline.it/roberto/ Modalità d'esame: È previsto un compito scritto e la realizzazione di un progetto.