aa 2012/2013 Algoritmi e strutture dati

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.