Analisi e Ottimizzazione dei Sistemi Finanziari Crediti: 6 Obiettivo del Corso: acquisizione delle principali metodologie modellistiche e informatiche per la valutazione di strumenti finanziari e la progettazione prototipale di Sistemi di Risk Management. Abilità: E’ consigliabile una buona base matematica per apprendere più facilmente gli strumenti di base per il “pricing” degli strumenti finanziari e formulare i modelli per la diversificazione e la copertura dei rischi di mercato. E’ importante una conoscenza almeno di base delle architetture software per poter sviluppare le problematiche della progettazione e del dispiegamento dei sistemi di risk management anche come “Web Services”. Docente: Francesco Archetti Programma: 1. Valutazione degli investimenti e degli strumenti finanziari in condizioni di incertezza. 2. Calcolo di VAR - Value at Risk (rischi di credito, rischi di mercato, rischi operazionali). 3. Strumenti derivati (Future e Opzioni). 4. Modelli di Asset Management 5. Struttura fondamentale di Sistemi di Risk Management: i. rappresentazione dei fattori di rischio e degli strumenti finanziari ii. misurazione e gestione dei rischi iii. generazione di scenari e dinamiche di portafoglio Testi consigliati fondamentali: - F. Archetti, E. Messina, Project Analysis and Risk Management (Valuation and Optimization Models), Modalità di esame: Discussione di una Tesina e prova orale. Architettura degli Elaboratori (Reti) Crediti: 4 Conoscenze: Tecnologie impiegate nei livelli di infrastruttura delle reti di calcolatori, con particolare riferimento agli ambiti TCP/IP (internet), concetti base e criteri di confronto Abilità: Capacità di scegliere le tecnologie di rete più opportune per semplici ambiti di lavoro, capacità di analizzare i problemi che si presentano integrando i vari elementi di un'infrastruttura telematica Docente: Claudio Ferretti Programma: 1.Breve storia delle tecnologie di rete. Necessità di definizione di protocolli a livelli: ISO/OSI e TCP/IP 2.I livelli più bassi: livello fisico, "datalink", "medium access" 3.Internetworking, problemi di routing, IP 4.Livello di trasporto, TCP. Servizi alle applicazioni in TCP/IP: "naming" 5.Servizi applicativi: crittografia. Applicazioni in TCP/IP: posta elettronica, web 6.Approccio allo sviluppo di programmi TCP/IP con l'uso delle socket Testi consigliati: A. Tanenbaum, "Reti di Computer", ed. UTET Libreria Modalità di esame: due prove, una prova scritta teorica, che contribuisce al 60% del voto, e una prova pratica su terminale, che contribuisce al 40% del voto; un breve orale, se concordato con lo studente. Link al corso: http://old.disco.unimib.it/ferretti/reti Architettura degli Elaboratori (Sistemi Distribuiti) Crediti: 6 Conoscenze: Organizzazione e funzionamento dei sistemi distribuiti. Modelli, algoritmi e strumenti per la progettazione e lo sviluppo di applicazioni distribuite. Comprensione delle problematiche inerenti alla progettazione e al funzionamento dei sistemi distribuiti, con particolare riferimento agli ambienti Web e Internet. Abilità: Capacità di progettare applicazioni distribuite sapendo affrontare e discutere le problematiche di architettura e qualità dei servizi erogati. Capacità di realizzare applicazioni utilizzando le tecnologie studiate durante il corso: Java/RMI, Java/EJB e .NET. Docente: Flavio De Paoli Programma 1. 2. 3. 4. 5. 6. 7. Definizione e motivazioni per i sistemi distribuiti. Aspetti hardware e software. Concetti fondamentali: comunicazione e naming, concorrenza e sincronizzazione, trasparenza. Proprietà fondamentali: prestazioni, affidabilità, flessibilità, disponibilità e scalabilità. Comunicazione basata su scambio messaggi e su chiamata di procedura: remote procedure call, remote object invocation e message-oriented communcation. Comunicazione punt-a-punto e broadcast. Processi e threads. Modello client/server, architettura dei client e dei server. Migrazione del codice (cenni). Agenti (cenni). Naming e concetto di riferimento. Nomi, identificatori ed indirizzi. Localizzazione di entita’ mobili. Rimozione delle entità non più referenziate Sincronizzazione. Sincronizzazione dei clock e clock logici. Algoritmi di elezione distribuita. Algoritmo di mutua esclusione. Transazioni distribuite (cenni). Consistenza e replica (cenni). Modelli di consistenza rispetto ai dati. Tolleranza ai guasti (cenni). Modelli di fallimento e principali tecniche di recovery. Sistemi basati su tecnologia ad oggetti. CORBA e DCOM/.NET: caratteristiche e confronto tra i modelli. I servizi principali di CORBA. Progettazione a componenti: il modello Java/EJB. Testi consigliati fondamentali: - A. S. Tanenbaum and M. van Steen, Distributed Systems: Principles and Paradigms Prentice Hall, 2001. ISBN 0-13-088893-1 - W. Emmerich, Engineering Distributed Objects John Wiley & Sons, 2000. ISBN: 0471986577 Testi complementari per esercizi e consultazione: - G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems: Concepts and Design - (Ed 3) Addison-Wesley ©Pearson Education 2001. ISBN 0201-619-180 - D. Schmidt, M. Stal, H. Rohnert, F. Buschmann, Pattern-oriented Software Architecture Vol 2: Patterns for Concurrent and Networked Objects John Wiley & Sons, 2000. ISBN: 0471606952 Modalità di esame L'esame prevede lo svolgimento e la discussione di un progetto che impieghi le tecniche e i principi studiati durante il corso. Link al corso: http://twilight.dse.disco.unimib.it/depaoli/ds Tecnologie informatiche per la comunicazione Crediti: 6 Conoscenze: Inquadramento e stato dell’arte delle tecnologie per la comunicazione tramite Web e apparati mobili. Concetti di linguaggi di markup, elementi fondamentali dello standard XML, metodi per la progettazione di applicazioni XML Abilità: Valutare diverse tecnologie per la costruzione di applicazioni Web e mobili, progettare e implementare sistemi client server molto semplici in ambiente Web fisso e mobile. Costruire i DTD e i documenti XML. Usare le tecnologie relative ad XML per la costruzioni di applicazioni per la gestione di documenti in Internet. Docente/i: R. Bisiani, H. LeVan Programma: 1) Introduzione, motivazioni, tecnologie di trasmissione,Internet, Web technologies, Web Services, modelli architetturali HTTP, augmenting HTML, ActiveX, Applets, MIME, EDI Security Tecnologie multimediali Tecnologie per apparati mobili 2) 3) 4) 5) 6) Elementi fondamentali di XML - Costruzione di DTD e documenti XML 7) Elementi di Perl e programmazione con XML Testi consigliati: Paul May, The Business of Ecommerce, Cambridge Univ. Press, 2000 A. Gosh, E-commerce Security, Wiley, 1998 St Laurent and Cerami, Building XML Application, McGraw Hill, 1999 Modalità di esame: Progetti Link al corso: http://old.disco.unimib.it/mcommerce Basi di Dati e Sistemi Informativi (Complementi) Crediti: 6 Conoscenze: Il corso intende presentare gli aspetti archietturali delle basi di dati e introduce all'utilizzo di tecnologie avanzate basate su DBMS, principalmente Distributed DBMS, Data Warehousing e schemi architetturali per l'accesso di basi di dati tramite web middleware. Vengono inoltre presentati i concetti fondamentali per la comprensione e progettazione di sistemi informativi. Abilità: Comprendere la tecnologia di un DBMS e di un DDBMS, utilizzare data warehouses. Docente: Paolo Missier Programma Elementi di progettazione fisica. Organizzazione fisica dei dati. Strutture di accesso ausiliarie: hashing ed indici. Elementi di progettazione fisica: stima del carico transazionale e linee guida per la scelta degli indici. Gestione della concorrenza. Definizione di transazione. Proprietà acide delle transazioni. Anomalie delle transazioni concorrenti. Serializzabilità. Locking a due fasi, la gestione del locking, deadlock e politiche di risoluzione. Tecniche di Recovery Management. Organizzazione del file di log e algoritmi di ripristino. Ottimizzazione dell'allocazione dello spazio. Ottimizzazione delle interrogazioni. Basi di dati distribuite: principi, problemi architetturali, soluzioni comuni. Controllo di concorrenza su DDBMS. Protocollo 2 phase commit. Basi di dati e World Wide Web. Schemi architetturali per il data management via Web. Architetture basate su JSP, application servers J2EE e JDBC. Esempi pratici. Data Warehousing. Definizione del contesto OLAP. Schemi a stella e generalizzazioni. Definizione di data cubes. Tecniche per l'interrogazione. Operatori per il calcolo di data cubes. Cenni su Data Mining. I sistemi informativi. Esempi di sistemi informativi. Il ciclo di vita di un sistema informativo. Il concetto di processo. La reingegnerizzazione dei processi. La qualità dei dati e dei sistemi informativi. Concetto di qualita’. La qualita’ dei dati, dei processi, dei sistemi informativi, dei servizi forniti da un sistema informativo. Caratteristiche, indicatori e metriche. Testi consigliati • P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, “Basi di Dati: Concetti, Linguaggi e Architetture”, Seconda Edizione, McGraw-Hill Italia, 1999. • Materiale didattico a disposizione ai siti del corso (vedi link sottostante). Modalità di esame. Per il corso di Basi di Dati e Sistemi Informativi (Complementi), l’esame consiste di una prova scritta, eventualmente sostituibile da prove in itinere, e di una prova orale. Il progetto e' consigliato. La prova orale puo' consistere nella discussione approfondita del progetto. Link al corso: http://old.disco.unimib.it/DB_el_co/ Basi di Dati e Sistemi Informativi (Elementi e Complementi) Crediti: Elementi 7, Complementi 6 Conoscenze: Il corso intende presentare i concetti fondamentali sulle basi di dati, sui relativi sistemi di gestione ed elementi introduttivi ai sistemi informativi. Abilità: Progettare, realizzare e gestire una base di dati collocandola nel contesto più ampio dei sistemi informativi. Docenti: Paolo Missier, Carlo Mereghetti Programma Introduzione. Concetti generali. Sistemi informativi, sistemi organizzativi e sistemi informatici. Tipologie ed esempi di sistemi informativi. Concetto di informazione e dato. Introduzione a basi di dati e DBMS, modello dei dati, concetto di schema e istanza. Indipendenza logica e fisica dei dati e tipologia di linguaggi per basi di dati. Il modello relazionale. Modelli logici. Modello relazionale: relazioni e tabelle, schemi ed istanze, informazione incompleta e valori nulli, chiavi, vincoli di integrità. Linguaggi di interrogazione. Algebra relazionale: operatori di base e operatori derivati. Interrogazioni in algebra relazionale ed equivalenza di espressioni algebriche. SQL. Definizione dei dati in SQL. Definizione di interrogazioni in SQL: interrogazioni semplici, con operatori insiemistici, nidificate e con raggruppamento. Operazioni di inserimento, modifica e cancellazione. Definizione di viste. Cenni sull’integrazione di SQL nei linguaggi di programmazione. La progettazione concettuale. Metodologie di progettazione di basi di dati. Il modello Entità-Relazione. La progettazione logica. Ristrutturazione schemi E-R: eliminazione delle gerarchie, degli attributi composti e multivalore. Traduzione da schemi E-R a schemi relazionali. Problemi causati dalle ridondanze (normalizzazione): anomalie, dipendenze funzionali, forme normali e decomposizioni. Elementi di progettazione fisica. Cenni sull’organizzazione fisica dei dati. Strutture di accesso ausiliarie: hashing ed indici. Elementi di progettazione fisica: stima del carico transazionale e linee guida per la scelta degli indici. Gestione della concorrenza. Definizione di transazione. Proprietà acide delle transazioni. Anomalie delle transazioni concorrenti. Serializzabilità. Locking a due fasi, la gestione del locking, deadlock e politiche di risoluzione. Organizzazione del file di log e algoritmi di ripristino. Basi di dati e World Wide Web. Richiami su Internet e World Wide Web: nodi, indirizzi e protocolli, il World Wide Web, ancore e URL, HTML. L'accesso alle basi di dati: accesso a database via common gateway interface (CGI). Cenni su XML e basi di dati. La sicurezza dei dati. Definizioni e concetti di base. I meccanismi per la sicurezza: identificazione/autenticazione, controllo dell'accesso, audit e crittografia. Politiche per il controllo dell'accesso: discrezionali (DAC), mandatorie (MAC), basate su ruoli (RBAC). Politiche discrezionali nei DBMS relazionali. I sistemi informativi. Esempi di sistemi informativi. Il ciclo di vita di un sistema informativo. Il concetto di processo. La reingegnerizzazione dei processi. La qualità dei dati e dei sistemi informativi. Concetto di qualità. La qualità dei dati, dei processi, dei sistemi informativi, dei servizi forniti da un sistema informativo. Caratteristiche, indicatori e metriche. Testi consigliati P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, ``Basi di Dati: Concetti, Linguaggi e Architetture,'' seconda edizione, McGraw-Hill Italia, 1999. Modalità di esame. L'esame è composto di tre parti: ● Un progetto che consiste nella progettazione e realizzazione di una piccola base di dati. ● Una prova scritta, della durata di due ore e trenta minuti, divisa in due parti: una prima parte di domande su vari argomenti trattati nel corso ed una seconda parte di esercizi. ● Una prova orale che consiste nella discussione del progetto, del compito scritto e in altre eventuali domande inerenti il contenuto del corso. Link al corso: http://old.disco.unimib.it/elementibasidati Basi di dati e sistemi informativi – supporti alla cooperazione Crediti: 6 Conoscenze: il lavoro come cooperazione: concetti e tecniche di analisi; tipologie di supporti alla cooperazione; architetture; il disegno dei supporti alla cooperazione Abilità: Alla fine del corso lo studente dovrà essere capace di considerare un programma come una denotazione di un algoritmo e di valutarne la complessità Docente: Giorgio De Michelis Programma: 1. Il Computer Supported Cooperative Work. Una area di ricerca multidisciplinare; la cooperazione nel lavoro: lâosservazione delle pratiche; piccoli gruppi e grandi organizzazioni; la progettazione come processo multidisciplinare; il ruolo degli utenti. 2. Il Groupware. Diverse tipologie di strumenti: comunicazione, collaborazione, coordinamento. Concetti di cooperazione sincrona e asincrona. 3. Le tecnologie della comunicazione. La comunicazione asincrona; le conferenze in tempo reale; la multimedialità per rendere più efficace la comunicazione. 4. Gli spazi di lavoro multimediale. Spazi condivisi in tempo reale; spazi di lavoro asincroni. 5. Le tecnologie di coordinamento. Le agende elettroniche; i sistemi di Workflow management, il Pulsar 6. I sistemi di knowledge management. Ricerca, filtraggio e presentazione della conoscenza 7. Le sfide della ricerca. La progettazione seduttiva; la trasformazione dello spazio; il supporto alla consapevolezza; sistemi aperti, molteplici e continui. Testi consigliati: U. M. Borghoff, J. H. Schlichter, Computer-Supported Cooperative Work. Introduction to Distributed Applications, Springer, 2000. J. Grudin, S. E. Poltrock, Computer-Supported Cooperative Work and Groupware, Tutorial all'interno della conferenza internazionale su CSCW, 1999. G. De Michelis, Aperto molteplice, continuo, Dunod, Italia, 1998 Modalità di esame: L’esame consiste in una discussione orale. Gli studenti interessati potranno richiedere di vertere parte dell'orale sull'approfondimento di uno dei temi trattati in aula. Cibernetica (Teoria dei Sistemi I) Crediti: 6 Conoscenze: Conoscenza delle metodologie matematiche di alcuni paradigmi dell’informatica applicata quali automi cellulari, reti neurali deterministiche, reti di processori in parallelo e delle loro dinamiche rispetto situazioni di stabilità, attrattività e osservabilità, controllo. Abilità: Avere solida base teorica per trattare problemi concreti, non solo dell’informatica in senso stretto ma anche di applicazioni modellistiche, utilizzando rigorose procedure razionali e non defatiganti metodologie “prova ed errore” (tipo o la va o la spacca, prima o poi la azzecchiamo). Docente: Gianpiero Cattaneo Programma: 1. Teoria generale dei Sistemi Dinamici (SD). Reti in modalità parallela e sequenziale. Teoria generale dei PDP (Parallel Distributed Processing). Applicazioni del parallelismo: Teoria degli Automi Cellulari uno e duodimensionali e Reti Neurali. Equivalenza fra reti Booleane e reti bipolari. Reti neurali strettamente separatrici e reti intere. Singolo neurone come riconoscitore. 2. Sistemi Dinamici a Tempi Discreti (SDTD). Sistemi uno-dimensionali: lineari, affini e generali. Stabilità, Attrattività e Repulsività. Teoria delle Equazioni alle differenze (ED) e ricorsività dal punto di vista dinamico. Equivalenza delle ED lineari con i sistemi lineari multi-dimensionali. Applicazioni alla Dinamica Economica. Contrattività per sistemi lineari e applicazioni alle catene di Markov a tempi discreti. 3. Raggiungibilità e osservabilità per i SDTD. Teoria del controllo nel caso di SDTD. L’operatore esponenziale di matrici come legame colla teoria del controllo tra SD a tempi discreti e SD a tempi continui. Testi consigliati fondamentali: - S. Goldberg, Introduction to difference equations, Dover - S.N. Elaydi, An introduction to difference equations, Springer. - J.P. LaSalle, The stability and control of discrete processes, Springer. Testi complementari per esercizi e consultazione: - J.T. Sandefur, Discrete dynamical systems, Oxford University Press. - R.A. Holmgren, A first course in discrete dynamical systems, Springer Verlag - M.A. Arbib, Brains, Machines, and Mathematics, Springer Verlag. - G. Gandolfo, Economic Dynamics, Sprinter Verlag. Modalità di esame: Compitini durante l’anno come sostitutivi della prova scritta oppure prova scritta finale. Discussione di una Tesina e prova orale. Cibernetica (Teoria dei Sistemi 2) Crediti: 6 Conoscenze: Conoscenza della teoria dei linguaggi dal punto di vista dinamico. Padronanza teorica della moderna teoria del caos in ambito informatico. Uso dei frattali con applicazioni alla compressione delle immagini. Abilità: Avere solida base teorica per trattare problemi concreti, non solo dell’informatica in senso stretto ma anche di applicazioni modellistiche, utilizzando rigorose procedure razionali e non defatiganti metodologie “prova ed errore” (tipo o la va o la spacca, prima o poi la azzecchiamo). Docente: Gianpiero Cattaneo Programma: 1. Teoria astratta dei Sistemi Dinamici a Tempi Discreti (SDTD). Attrattività e repulsività di punti di equilibrio e di sottosistemi dinamici. Instabilità di orbite e di sistemi. Sensitività alle condizioni iniziali come instabilità globale forte e teoria generale del caos topologico. Le mappe logistiche e SDTD preda – predatore come paradigmi di comportamenti caotici. 2. Caos nello spazio delle fasi delle successioni mono e bi – infinite su alfabeti finiti. La mappa di shift come esempio di caos topologico. Sottosistemi dinamici di tipo shift (sub-shift) e linguaggi regolari ad essi associati. Dinamica Simbolica. Applicazioni agli automi cellulari uno-dimensionali e problema della loro classificazione. 3. Teoria dei frattali come SDTD di tipo contrattivo. Teorema generale sulla mappe contratte. Spazio dei frattali. Sistemi di funzioni iterate (IFS) sullo spazio dei frattali indotti da un numero finito di mappe contrattive. IFS parametrici e IFS ricorsivi. Compressione delle immagini con tecniche frattaliche. Testi consigliati: --R.L. Devaney, A First Course in Chaotic Dynamical Systems, Addison-Wesley. --M. Barnsley, Fractals Everywhere, Academic Press. --D. Lind and B. Marcus, Symbolic dynamics and coding, Cambridge University Press. Testi complementari per esercizi e consultazione: --R.L. Devaney, Chaos, fractals, and dynamics: Computer experiment, Addison-Wesley. --D. Gulick, Encounters with chaos, McGraw-Hill --F. Fogelman Souliè, Y. Robert & M. Tchuente, Automata Networks in Computer Science, Manchester University Press. Modalità di esame: Compitini durante l’anno come sostitutivi della prova scritta oppure prova scritta finale. Discussione di una Tesina e prova orale. ECONOMIA ED ORGANIZZAZIONE AZIENDALE Professor Paolo Bassi Il corso verte sui temi attinenti l’impresa moderna, la sua economia, le strategie competitive e la struttura organizzativa. In particolare vengono analizzati: Economia dell’impresa contabilità finanziaria e contabilità direzionale; il bilancio: principi fondamentali; il conto economico; lo stato patrimoniale; la determinazione del reddito; attività fisse ed ammortamenti; il magazzino ed il livello dei prezzi; i finanziamenti; i flussi finanziari: concetti fondamentali; le analisi di bilancio: sistema degli indicatori e confronti; il processo di pianificazione: budget operativo, budget di cassa, budget di capitale; l’investitore e l’impresa: analisi del rendimento, alternative di investimento, la Borsa. Le strategie competitive l'analisi strutturale del settore; i modelli strategici fondamentali; i segnali di mercato e le mosse competitive; i raggruppamenti strategici; la strategia competitiva in settori diversi. La strategia organizzativa coerenza tra strategia e struttura; i vantaggi competitivi: principi fondamentali; i principali modelli organizzativi; le principali componenti organizzative; coerenza tra la strategia ai diversi livelli organizzativi, i vantaggi competitivi, le strutture organizzative. Testi adottati: R. Antony “Principi di contabilità aziendale” Etas Compass M. Porter “Il vantaggio competitivo” Ed. Comunità R. Breadley/S. Myers “Principles of corporate finance” International Student Edition Elaborazione Numerica dei Segnali Crediti: 6 Conoscenze: Lo studente acquisisce le nozioni fondamentali relative alla corretta manipolazione dei segnali nel dominio applicativo numerico, relativamente alla digitalizzazione, analisi e algoritmica di base. Abilità: Lo studente diventa capace di progettare applicazioni di elaborazione numerica del segnale su piattaforme di elaborazione correntemente disponibili in ambito industriale (DSP). Docente/i: Mario Malcangi Programma: 1. Fondamenti: Natura dei segnali, parametrizzazione dei segnali, teorema del campionamento, principio della quantizzazione, conversione analogico/digitale e digitale/analogica, sintesi di segnali. 2. Analisi dei segnali: Natura frequenziale dei segnali, serie e trasformata di Fourier, trasformata discreta di Fourier, trasformata veloce di Fourier, finestratura, altre tecniche di analisi. 3. Filtraggio dei segnali: Natura del filtraggio, funzione di trasferimento e risposta in frequenza dei sistemi, filtraggio analogico e filtraggio digitale, filtraggio IIR, filtraggio FIR, trasformata Z. 4. Architetture DSP: Architettura Von Neuman e Harvard a confronto, pipelining e parallelismo, architettura VLIW, architettura sistolica, tecnologie DSP allo stato dell’arte. 5. Laboratorio: Sperimentazione ed analisi su piattaforme di processing DSP dei principi e degli algoritmi di elaborazione numerica del segnale discussi nel corso. Testi consigliati: A Simple Approach to Digital Signal Processing Craig Marven & Gillian Ewers Publisher: John Wiley & Sons ISBN# 0-471-15243-9 Modalità di esame: Verifica scritta delle argomentazioni teoriche e progetto Titolo: FISICA GENERALE II (I modulo) Sottotitolo: Elementi di Elettromagnetismo Insegnamento del IV anno di corso (vecchio ordinamento) Insegnamento del I anno del corso specialistico in Informatica (nuovo ordinamento) Crediti: 6 crediti (lezioni frontali: 4 crediti; esercitazioni: 2 crediti) Conoscenze: Conoscenze di base della Fisica dell’Elettricitá, del Magnetismo, dell’Elettromagnetismo, dell’Ottica: fenomenologia e leggi quantitative (modelli matematici). Abilitá: Capacitá di analizzare qualitativamente e quantitativamente semplici situazioni fisiche. Capacitá di risolvere semplici problemi d’Elettromagnetismo e Ottica. Capacitá di fare riferimento a semplici modelli matematici di fenomeni fisici. Docente: prof Giuliano BOELLA Programma: 1. Elettrostatica – La carica elettrica e la legge di Coulomb. Il campo elettrico. La legge di Gauss. Il potenziale elettrico. Condensatori e dielettrici. 2. Elettrodinamica – Corrente e resistenza. Circuiti in corrente continua. Il campo magnetico delle correnti. La legge di Ampere. 3. Induzione elettromagnetica – La legge dell’induzione di Faraday. Proprietá magnetiche della materia. L’induttanza. Circuiti in corrente alternata. Le equazioni di Maxwell. Le onde elettromagnetiche. 4. Ottica e Fisica Moderna – La natura e la propagazione della luce. Riflessione e rifrazione sulle superfici. Specchi sferici e lenti. Interferenza, diffrazione, polarizzazione della luce. Luce e Fisica dei quanti. La natura ondulatoria della materia elementare. La struttura dell’atomo di idrogeno secondo Bohr. Testi consigliati: Resnick, Halliday, Krane - “FISICA 2” - Casa Editrice Ambrosiana Serway - “Principi di Fisica” - EDISES Modalitá d’esame: L’esame consta di una prova scritta e di una prova orale. La prova scritta prevede la risoluzione di semplici problemi con l’applicazione delle leggi fisiche e lo svolgimento di un tema su un argomento di Fisica dell’Elettromagnetismo. La prova orale si articola in domande sugli argomenti di Fisica dell’Elettromagnetismo, trattati a lezione. Titolo: FISICA GENERALE II (II modulo) Sottotitolo: Progettazione Logica Digitale Insegnamento del IV anno di corso (vecchio orrdinamento) Insegnamento del I anno del corso specialistico in Informatica (nuovo ordinamento) Crediti: 6 crediti (lezioni frontali: 4 crediti; esercitazioni di laboratorio: 2 crediti) Conoscenze: Tecniche di progettazione di circuiti logici (logica combinatoria e logica sequenziale sincrona) mediante componenti logici ad hardware programmabile. Aspetti pratici della progettazione digitale. Progettazione di un programma assembler per microcontrollori, dedicati al controllo di processi in tempo reale. Abilitá: Capacitá di progettare circuiti logici digitali. Capacitá di effettuare un debugging dei circuiti progettati a livello di simulazione. Uso di software specifico HDL. Strutturazione della progettazione. Docente: prof Giuliano BOELLA Programma: 1. Elementi logici. Famiglie logiche. Principi di progetto di logica combinatoria. Progetto col PLD. 2. Principi di progetto di logica sequenziale sincrona. Progetto di sistemi sequenziali con macchine a stati. Pratica di progetto di macchine sequenziali sincrone. 3. Progetto di macchine con circuiti hardware programmabili (PLD e FPGA). Uso di software di progettazione di alto livello (HDL). Aspetti pratici della progettazione digitale. La progettazione del silicio: gli ASIC. 4. Principi di logica programmata: i microcontrollori. Pratica di progetto di sistemi controllati da microprocessore. Testi consigliati: J.F.Wakerly – “Digital Design – Principles and Practice” – Prentice Hall International (ed. 2000) Modalitá d’esame: L’esame consiste in una discussione basata su una relazione, presentata dallo studente a seguito delle attivitá sviluppate in laboratorio, con riferimento ai concetti presentati a lezione. Fondamenti Logico-Matematici dell'Informatica Crediti: 6 Conoscenze: Nella parte istituzionale del corso verranno esaminati i concetti fondamentali della logica proposizionale e del prim'ordine, sia sul piano sintattico che su quello semantico. Nella parte monografica, verranno sviluppate le corrispondenze tra dimostrazioni formalizzate in sistemi di logica costruttiva e programmi funzionali con tipi da un lato, e tra tipi o formule ed oggetti in opportune categorie. Questa parte del corso si propone di servire come prima introduzione ad un insieme di problematiche che sono alla base di molte ricerche nell'ambito della sintassi e della semantica dei linguaggi di programmazione funzionali con tipi. Abilità: Lo studente acquisterà familiarità con le principali tecniche di formalizzazione della deduzione, e con alcuni comuni metodi di dimostrazione (in particolare, il principìo di induzione matematica). La parte monografica del corso introdurrà lo studente alla teoria delle categorie, un linguaggio usato largamente nella ricerca teorica recente. Docente: Felice Cardone Programma: 1. 2. 3. 4. 5. 6. Logica proposizionale classica: linguaggio e calcolo della deduzione naturale. Semantica mediante tavole di verità e tableaux. Teorema di completezza. Logica dei predicati: linguaggio e calcolo della deduzione naturale. Cenni sui tableaux e la nozione di interpretazione di un linguaggio predicativo. Parte monografica: Il frammento positivo del calcolo proposizionale intuizionista. Calcolo dei sequenti e teorema di eliminazione del taglio. Relazioni con le categorie cartesiane chiuse e il lambda-calcolo con tipi semplici. Testi consigliati: Per la parte istituzionale: Gabriele Lolli: Introduzione alla Logica Formale, il Mulino, Bologna, 1991. Per la parte monografica: 1. Andrea Asperti e Giuseppe Longo: Categories, Types and Structures, MIT Press, Foundations of Computing Series, 1991, capitolo 8. 2. Magnan, F. & Reyes, G. E.: Category Theory as a Conceptual Tool in the Study of Cognition. In J. Macnamara & G. E. Reyes (Eds) The Logical Foundations of Cognition. Oxford University Press, New York, pagg. 57-90 Modalità di esame: Due compiti scritti durante il corso e una eventuale prova orale con la possibilità di approfondire argomenti particolari attraverso pubblicazioni di ricerca concordate con il docente. Informatica applicata (Bioinformatica) Crediti: 6 Conoscenze: il corso si propone di introdurre lo studente ad un recente settore di applicazione dell'Infomatica noto come Bioinformatica o Biologia Computazionale: questa nuova disciplina è nata dalla crescente necessità nell'ambito della Biologia Molecolare di sviluppare adeguati strumenti computazionali per la soluzione di molteplici problemi, principalmente derivanti dall'analisi di sequenze biologiche (DNA, RNA). L'obiettivo principale del corso è quello di fornire allo studente le conoscenze algoritmiche per poter affrontare la soluzione e lo studio di problemi classici su sequenze, grafi ed alberi in Bioinformatica. Abilità: capacità di disegnare algoritmi esatti o approssimanti per la soluzione di semplici problemi di ottimizzazione su sequenze, alberi e grafi che vengono utilizzati per risolvere problematiche in bioinformatica. Capacità di utilizzo dei programmi disponibili in rete per lo studio delle sequenze biologiche (DNA, RNA). Docente: Paola Bonizzoni Programma: 1.Introduzione alla biologia computazionale: motivazioni e metodologie. 2.Nozioni introduttive di teoria degli algoritmi: problemi NP-completi, problemi di ottimizzazione, algoritmi di approssimazione. 3.La ricerca di un pattern in un testo: il problema generale del matching esatto. 4.Gli alberi suffisso e la loro applicazione nella ricerca di ripetizioni nelle sequenze biologiche. Palindromi, ripetizioni e tandem repeats: algoritmi. 5.L'importanza del confronto di sequenze biologiche. La distanza di edit tra due sequenze. Allineamento di due sequenze, allineamento multiplo di sequenze. La programmazione dinamica per la costruzione dell'allineamento. Allineamento con alberi. 6.Alberi evoluzionari. Ricostruzione della storia evolutiva di specie con alberi evoluzionari: metodi principali. 7.Riarrangiamento genomico. La ricostruire dell'evoluzione genomica tramite lo studio di problemi combinatori di ordinamento. Ordinamento per inversione e trasposizione: algoritmi e complessità 8. Le banche dati e i principali programmi per il confronto sequenze e la ricostruzione di alberi evoluzionari (FAST, BLAST, PHYLIP). Testi consigliati: D. Gusfield Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. Cambridge Univ. Press. 1997 J. Setubal, J. Meidanis, Introduction to Computational Molecular Biology, PWS, 1997. Altro materiale: appunti del docente. M. Attimonelli, G. Pesole, E. Quagliarello, E.C. Saccone Principi di Bioinformatica Editore Gnocchi, 1997. Appunti distribuiti dal docente. Modalità di esame: L'esame consiste nello svolgimento di homework o di un progetto da concordare individualmente. Link al corso: http://bioinformatics.bio.disco.unimib.it/~bonizzoni/corso_bioinformatica.html Informatica Applicata (Computazione Quantistica) Crediti: 6 Conoscenze: Aspetti applicativi della meccanica quantistica rispetto a tematiche di rilevanza informatica. Abilità: Conoscere alcuni aspetti della meccanica quantistica applicata: circuiti quantistici e algoritmi quantistici. Docente: Gianpiero Cattaneo Programma: 1. 2. 3. Metodi Matematici della Meccanica Quantistica in spazi di Hilbert finito – dimensionali. Descrizione assiomatica degli stati come operatori densità, delle osservabili quantistiche come operatori autoaggiunti, e della evoluzione dinamica come operatori unitari. Valori medi, varianza nella teoria quantistica delle probabilità generalizzate (regola di Born). Teorema di Heisenberg. L’approccio di Feynmann alla computazione quantistica. Tecniche per la realizzazione quantistica di porte classiche: conservatività e reversibilità. Logica conservativa alla Fredkin-Toffoli. Circuiti quantistici basati su porte conservative. Automi quantistici e Macchine di Turing quantistiche: loro descrizione in spazi di Hilbert prodotto tensoriale. Algoritmi quantistici. I due algoritmi di Shor per la fattorizzazione di numeri interi e per il calcolo dei logaritmi discreti: conseguenze sulla crittografia classica. La trasformata di Fourier veloce come operatore unitario per selezionare la soluzione di opportuni problemi. Testi consigliati: R. P. Feynmann, Lectures on computation, Penguin books. J. Gruska, Quantum Computing, Mc Graw – Hill C. J. Isham, Lectures in Quantum Theory, Imperial College Press Articoli consigliati: -- E. Fredkin and T. Toffoli, “Conservative Logic”, International Journal of Theoretical Physics 21 (1982) 219 - 253. -- A. Barenco, D. Deutsch, A. Ekert, and R. Josza, “Conditional Quantum Control“, Physical Review Letters 74 (1995) 4083 – 4086. -- P. Benioff, “Quantum mechanical models of Turing machines that dissipates no energy”, Physical Review Letters 48 (1982) 1581 - 1585 -- D. Deutsch, “Quantum theory, the Church – Turing principle, and the universal quantum computer“, Proceedings Royal Society London A400 (1985) 97 – 117. -- D. Bouwmeester, A. Ekert, A. Zger, The physics of quantum information, Springer Verlag. Modalità di esame: Preparazione di una Tesina seguita dalla prova orale. Informatica Applicata (Metodi Decisionali per l’Azienda) Crediti: 6 Conoscenze: Lo studente apprenderà i modelli base della Business Intelligence e On Line Customer Relationship Management per la valorizzazione di dati transazionali relativi a commercio e commercio elettronico. Inoltre, verranno esposti algoritmi computazionali di WEB e Text Mining per la gestione di call center ed il reperimento automatico ed adattivo di informazioni in ambiente WEB. Abilità: Lo studente acquisirà competenze specifiche che lo porranno in grado di formulare e risolvere problemi di Business Intelligence e Customer relationship Management, ed in termini operativi, di progettare ed implementare sistemi software per la gestione delle relazioni con i clienti on-line, l’analisi di dati aziendali e le decisioni in condizioni di incertezza. Docente: Stella Programma: 1. Introduzione al Data, WEB e Text Mining - Data Mining e applicabilità - WEB e Text Mining per BI e CRM - Data base di marketing - Data base di microelettronica - Data base di credito - Data base di proteine 2. Preprocessing - Data Cleaning - Data Transformation - Data Integration - Data Reduction - Discretizzazione 3. Classificazione - Introduzione alla classificazione - Modelli supervisionati - Modelli non supervisionati - Cross Validation, Leave-One-Out, Regolarizzazione, … - Matrice di confusione - Sensitività e specificità 4. Reti di Neuroni Artificiali Introduzione e motivazioni Feedforward Radial Basis Function Networks Self Organizing Maps Apprendimento e validazione Neural networks MATLAB Toolbox 5. WEB Mining Definizioni Motori personalizzati di ricerca Call center Customer Relationship Management Reccomendation Cross selling 6. Text Mining Definizioni Parsing e Stemming Classificazione soggettiva Indicizzazione soggettiva Testi consigliati: Slide pdf disponibili sul sito Modalità di esame: Applicazione a casi di studio delle tecniche apprese (con report dei risultati) e discussione orale Link al corso: www.cnds.disco.unimib.it Informatica teorica (Elementi + Complementi) Crediti: 12 Conoscenze: sommario di teoria della computazione; semantica formale dei programmi (operazionale, denotazionale e assiomatica); tipi di dati astratti; elementi di complessità dei programmi; le classi di complessità; soluzioni approssimate di problemi complessi. Abilità: Alla fine del corso lo studente dovrà essere capace di considerare un programma come una denotazione di un algoritmo e di valutarne la complessità Docente: Giorgio De Michelis Programma: 1. Premessa 2. Elementi di teoria della computabilita' La Tesi di Church Macchine di Turing Funzioni parziali ricorsive (Kleene) I programmi IMP Proprieta’ decidibili e indecidibili degli insiemi e delle funzioni computabili 3. Introsduzione alla semantica dei programmi 4. Introduzione alla semantica operazionale Sui principi di induzione e sulle definizioni induttive 5. Introduzione alla semantica denotazionale e alla teoria dei domini 6. Introduzione alla semantica assiomatica e discussione sulla completezza delle regole di Hoare 7. Introduzione alla specifica algebrica - tipi di dati astratti, semantiche iniziali 8. Riepilogo di teoria della complessita' dei programmi 9. Classi di complessita' in spazio e tempo e relazioni tra di loro 10. Problemi di approssimazione 11. Definizione sintattica di classi di problemi: complessita’ descrittiva e complessita’ computazionale Testi consigliati: G. Wynskel, The formal semantics of programming languages, The MIT Press, 1993 H. Ehrig, B. Mahr, Fundamentals of algebraic specification 1, Springer Verlag, 1985 C. H. Papadimitriou, Computational complexity, Addison-Wesley, 1994. Modalità di esame: L’esame consta di una prova scritta e di una prova orale. La prova scritta consiste in due esercizi di applicazione, rispettivamente, della semantica denotazionale e della semantica assiomatica. Alla prova scritta non viene assegnato un voto. Il suo superamento e‘ puramente propedeutico alla prova orale. La prova orale riguarda il programma sopra indicato. Gli studento sono invitati a scegliere tra gli argomenti trattati quello che ha per loro piu’ interesse. Sara’ cura del docente assegnare loro una lettura di approfondimento su quell’argomento. Informatica teorica (Elementi + Complementi) Crediti: 12 Conoscenze: sommario di teoria della computazione; semantica formale dei programmi (operazionale, denotazionale e assiomatica); tipi di dati astratti; elementi di complessità dei programmi; le classi di complessità; soluzioni approssimate di problemi complessi. Abilità: Alla fine del corso lo studente dovrà essere capace di considerare un programma come una denotazione di un algoritmo e di valutarne la complessità Docente: Giorgio De Michelis Programma: 1. Premessa 2. Elementi di teoria della computabilita' La Tesi di Church Macchine di Turing Funzioni parziali ricorsive (Kleene) I programmi IMP Proprieta’ decidibili e indecidibili degli insiemi e delle funzioni computabili 3. Introsduzione alla semantica dei programmi 4. Introduzione alla semantica operazionale Sui principi di induzione e sulle definizioni induttive 5. Introduzione alla semantica denotazionale e alla teoria dei domini 6. Introduzione alla semantica assiomatica e discussione sulla completezza delle regole di Hoare 7. Introduzione alla specifica algebrica - tipi di dati astratti, semantiche iniziali 8. Riepilogo di teoria della complessita' dei programmi 9. Classi di complessita' in spazio e tempo e relazioni tra di loro 10. Problemi di approssimazione 11. Definizione sintattica di classi di problemi: complessita’ descrittiva e complessita’ computazionale Testi consigliati: G. Wynskel, The formal semantics of programming languages, The MIT Press, 1993 H. Ehrig, B. Mahr, Fundamentals of algebraic specification 1, Springer Verlag, 1985 C. H. Papadimitriou, Computational complexity, Addison-Wesley, 1994. Modalità di esame: L’esame consta di una prova scritta e di una prova orale. La prova scritta consiste in due esercizi di applicazione, rispettivamente, della semantica denotazionale e della semantica assiomatica. Alla prova scritta non viene assegnato un voto. Il suo superamento e‘ puramente propedeutico alla prova orale. La prova orale riguarda il programma sopra indicato. Gli studento sono invitati a scegliere tra gli argomenti trattati quello che ha per loro piu’ interesse. Sara’ cura del docente assegnare loro una lettura di approfondimento su quell’argomento. Ingegneria del Software Crediti: 6 Conoscenze: < principali tematiche dell’ingegneria del software, in particolare la fase di analisiprogettazione, pianificazione e stime di costi di un progetto software, introduzione alle problematiche di qualità> Abilità: <capacità di analisi e progettazione di sistemi software anche complessi usando il linguaggio UML> Docente/i: <Francesca Arcelli Fontana> Programma: 1.Modelli di Ciclo di Vita del Software Fasi del ciclo di vita, Ciclo di vita a cascata, Modelli evolutivi, trasformazionali, a spirale. Prototipizzazione. Introduzione ai concetti di qualità del software. 2. Analisi dei Requisiti e Definizione delle Specifiche Metodi Formali, Semiformali e Informali. Specifiche Operazionali e Descrittive. Diagrammi EntitàRelazioni. Diagrammi Flusso-Dati. Automi a Stati Finiti. 3. Il Progetto del Software Obiettivi del Progetto. Moduli e architettura software. Criteri di modularizzazione: coesione ed accoppiamento, riusabilità. Relazioni fra moduli. Struttura di un modulo: interfaccia e corpo. Astrazione sui dati, sul controllo - information hiding, incapsulamento. Tecniche di progettazione bottom-up e top-down. 4. Il linguaggio UML per Analisi e Progettazione orientata agli Oggetti Obiettivi e caratteristiche delle tecniche OO. Analisi di dominio. Aspetti Statici: Class Diagrams, Object Diagrams, Component Diagrams, Deployment Diagrams. Aspetti Dinamici: Use Case Diagrams, Interaction Diagrams (Sequence e Collaboration Diagrams), State Diagrams, Activity Diagrams - Package Diagrams. 5.Qualità e Metriche Introduzione alle problematiche di misura. Metriche di dimensione, LOC, Numero ciclomatico di McCabe, Software Science di Holstead. Introduzione alle problematiche di collaudo. Collaudo di sistemi orientati agli oggetti. Introduzione alle metriche per sistemi orientati agli oggetti. 6.Pianificazione del progetto software Obiettivi della pianificazione dei progetti. Stime nei progetti software. Stime di costo. Tecniche di decomposizione. Modelli empirici di stima. Punti Funzione. Modello Cocomo. Testi consigliati: < UML Distilled , Fowler, Addison Wesley. Principi di Ingegneria del Software, R.S. Preessman, McGrawHill.> Modalità di esame: < a) Prova in laboratorio di analisi e progettazione con UML di un sistema assegnato. Ricerca bibliografica (via Web) su un argomento a scelta dello studente fra quelli non trattati o non trattati in modo approfondito durante il corso, la scelta dell’argomento deve essere concordata con il docente e la ricerca deve essere consegnata il giorno della prova pratica. Prova orale. sul programma del corso nella settimana successiva a quella della prova pratica. b) Sviluppo di un progetto assegnato dal docente a gruppi massimo di 2 o 3 studenti. Prova orale. sul programma del corso e discussione del progetto. c) E’ prevista la possibilità di sostenere l’esame di Ingegneria del Software congiunto con l’esame di Sistemi in Tempo Reale, o con l’esame di Progettazione di Sistemi o con l’esame di Linguaggi di Programmazione. Tale modalità va concordata con i relativi docenti dei corsi indicati.> INTELLIGENZA ARTIFICIALE Crediti: 6 Conoscenze: Nozioni di base di Logica. Programmazione object-oriented. Architetture di sistemi. Data Base. Abilità: Tecniche principali di problem solving; analisi e realizzazione di sistemi tecnologici basati sulla conoscenza. Docente: Stefania Bandini Programma: Il corso di Intelligenza Artificiale si articola in tre parti: Prima Parte: Introduzione all’Intelligenza Artificiale classica. Storia dell’Intelligenza Artificiale e relazioni con altre discipline (con particolare riferimento alle Scienze Cognitive, e alla Computer Science). Metodi per il problem solving: algoritmi e euristiche. Rappresentazione della conoscenza: conoscenza e ragionamento logico; strutture di rappresentazione e metodi inferenziali; conoscenza e ragionamento con incertezza. Sviluppo e computazione di basi di conoscenza. Intoduzione all’Ingegneria della Conoscenza. Seconda Parte: Intelligenza Artificiale distribuita e sistemi multi agente. Principi generali dei sistemi multi-agente. Problemi e modelli d’interazione e di cooperazione tra agenti. Modelli d’organizzazione di comunità di agenti; modelli a proprietà emergenti e di vita artificale (automi cellulari). Comportamento e azioni di sistemi ad agente. Modelli cognitivi e simulazione di comunità di agenti artificiali: problemi e modelli di comunicazione, coordinamento di azioni e problem solving distribuito (eco-agenti e sistemi artificiali di coevoluzione; integrazione con modelli computazionali evolutivi, es. Algoritmi Genetici) Terza Parte: Disegno e implementazione di esempi di applicazioni di sistemi basati sulla conoscenza o di agenti intelligenti. Si prevedono lo sviluppo di semplici sistemi ad agente per la simulazione di comportamenti collettivi di comunità di agenti artificiali o l’implementazione di agenti intelligenti singoli in grado di compiere ricerche sul Web o di trattare temi più tradizionali di problem solving. Per questa parte del corso è previsto l’uso di linguaggi di programmazione a oggetti (Java) e di ambienti dedicati per lo sviluppo di applicazioni di sistemi basati sulla conoscenza (JESS o CLIPS), che verranno direttamente introdotti durante il corso. Testi in adozione: S.J-. Russell, P. Norvig, Intelligenza Artificiale: un approccio moderno, UTET, (Torino), 1998 . J. Ferber, Multi-Agent Systems: an introduction to distributed artificial intelligence, Addison Wesley, 1999. J. M. Epstein, R. Axtell, Growing Artificial Societies, The MIT Press, 1996. Modalità di esame: L’esame finale consta di due prove. Per la prima è previsto lo svolgimento di un progetto da svilupparsi in un linguaggio a oggetti già noto o in un ambiente di programmazione dedicato all’aimplementazione di sistemi basati sulla conoscenza (shell JESS in Java o CLIPS in C) su temi che verranno concordati direttamente con gli esaminandi durante il corso o durante il ricevimento studenti direttamente con il docente. La seconda prova è orale e prevede un colloquio su argomenti trattati durante il corso e documentati nei testi in adozione. Interazione Uomo Macchina Crediti: 6 Conoscenze: Le problematiche generali considerate dalla disciplina della Human Computer Interaction Abilità: Capacità di progettare un’interfaccia utente di qualità, e capacità di valutare criticamente pregi e difetti di un’interfaccia utente di un prodotto software esistente (e in particolare un’interfaccia web) Docente/i: Roberto Polillo Programma: Prima Parte: Introduzione al design dell'interazione uomo-computer 1. La usabilità del software: definizioni di usabilità; perchè progettare sistemi usabili è difficile. Esempi tratti dal design degli oggetti quotidiani e dal software. 2. User Centered Design: progettazione centrata sull'utente. Analisi dei compiti e del contesto d'uso. Esempi. Il ciclo "compito - artefatto". Evoluzione del software e dei prodotti tecnologici. 3. Modelli dell'utente: chi è l'utente? Aspetti percettivi, cognitivi, culturali. 4. Valutazioni di usabilità: come si valuta la usabilità di una applicazione software. 5. L'importanza della prototipazione. Modelli di sviluppo iterativi e a waterfall. 6. La evoluzione dei paradigmi di interazione uomo-computer: linguaggi a comandi, interfacce a menu e forms, la metafora del desktop, l'interfaccia web. L'evoluzione del desktop. Relazioni fra paradigmi e tecnologie di interazione. Nuovi paradigmi: riconoscimento della scrittura, interfacce vocali, interfacce immersive, agenti intelligenti. 7. La comunicazione visiva e il design del software: nozioni di psicologia della forma; testo, grafica e immagini nel design dell'interfaccia utente. La multimedialità. L'uso del colore. Aspetti fisici, tecnologici, fisiologico/percettivi, cognitivi, culturali. Discussione di esempi vari. 8. Il design dell'interazione: le linee guida della ISO9241-10. Discussione di esempi vari. 9. Tempo, cambiamento, movimento. Criteri generali da seguire nella progettazione delle interfacce. 10. Il trattamento degli errori: la nozione di errore; vari tipi di errori; la gestione degli errori. Discussione di esempi vari. 11. Aiutare l'utente: sistemi di help, esigenze e tipologia; manuali on-line. Discussione di esempi vari. 12. Parte Seconda: Il design delle applicazioni web 1. La usabilità dei web 2. Un modello di qualità per le applicazioni web (comunicazione, funzionalità, contenuto, usabilità, gestione, accessibilità di un sito web) 3. Architettura dell'informazione 4. Discussione di esempi reali Testi consigliati: 1. Donald Norman, “La caffettiera del masochista”, Giunti Editore 2. Jakob Nielsen, "Web Usability", Apogeo, 2000 3. Lucidi dale lezioni (in http://www.rpolillo.it/IUM) Modalità di esame: L’esame consiste nella effettuazione di due progetti (effettuati da gruppi di 2-3 studenti): 1. Realizzazione di un prototipo dell’interfaccia utente di un sistema concordato da ogni gruppo di lavoro con il docente 2. Valutazione della qualità di un sito web (con test di usabilità), applicando il modello di qualità illustrato a lezione Linguaggi di Programmazione (elementi e complementi) Crediti: 12 Conoscenze: concetti fondamentali che distinguono i diversi linguaggi di programmazione e i diversi stili e paradigmi architetturali Abilità: identificare e caratterizzare diversi linguaggi di programmazione, stili e paradigmi architetturali. Confrontare diverse scelte semantiche nei diversi linguaggi. Riconoscere paradigmi e stili programmativi. Docenti: Francesca Arcelli (elementi), Mauro Pezzè (complementi) Programma: 1. 2. 3. 4. 5. Introduzione o paradigmi linguistici o qualità dei linguaggi di programmazione o storia dei linguaggi di programmazione o principali concetti relativi ai linguaggi di programmazione Sintassi e semantica o sintassi astratta, concreta e pragmatica o la forma EBNF o introduzione alla semantica o variabili o routine o aliasing e overloading o un processore semantico astratto (SIMPLESEM) o struttura run time Strutturare i dati o tipi built-in e primitivi o dati aggregati e costruttori di tipo o tipi definiti da utente e tipi di dato astratto il caso del C++ il caso di Eiffel o il type system o La struttura dei tipi in alcuni linguaggi caratteristici: Pascal C++ Ada o Modelli implementativi Strutturare la computazione o espressioni e comandi o esecuzione condizionale e iterativa o sottoprogrammi o eccezioni il caso di Ada il caso di C++ il caso di Java il caso di Eiffel il caso di ML o Pattern matching o Non determinismo e backtracking o Computazione guidata da eventi o Computazione concorrente strutturare il programma o concetti per supportare modularità o elementi linguistici per la programmazione in grande il caso del Pascal il caso del C 6. 7. 8. il caso del C++ il caso di Ada il caso di ML o Unità generiche linguaggi orientati agli oggetti o concetti della programmazione orientata agli oggetti o ereditarietà e tipi o caratteristiche orientate agli oggetti del C++ o caratteristiche orientate agli oggetti di Ada95 o caratteristiche orientate agli oggetti di Eiffel o caratteristiche orientate agli oggetti di Smalltalk o caratteristiche orientate agli oggetti di Java linguaggi di programmazione funzionali o principi di programmazione funzionale o il lambda calcolo come modello di computazione funzionale o elementi di LISP o elementi di ML o programmazione funzionale in C++ linguaggi logici e linguaggi basati su regole o principi di programmazione logica o elementi di PROLOG o linguaggi basati su regole Testi consigliati: Carlo Ghezzi, Mehdi Jazayeri, Programming Language Concepts, John Wiley and Sons 1998, terza edizione Lucidi presentati a lezione, disponibili su www.lta.disco.unimib.it Modalità di esame: Prova scritta (obbligatoria) e prova orale (facoltativa) Link al corso: www.lta.disco.unimib.it/ "Linguaggi e Traduttori" docente : Lucia Pomello 6 crediti Conoscenze Vengono presentati metodi e tecniche di base per la costruzione di interpreti e compilatori di linguaggi di programmazione, i risultati fondamentali della teoria dei linguaggi formali e la loro applicazione ai linguaggi di descrizione di documenti. Abilità Lo studente dovrà essere in grado di mettere in relazione risultati della teoria dei linguaggi formali con le tecniche di base per la costruzione di interpreti e compilatori di linguaggi di programmazione e con l'applicazione ai linguaggi di descrizione di documenti. Programma 1. Introduzione: Linguaggi e macchine astratte loro associate. La struttura generale di un compilatore/interprete e le fasi della compilazione. Ambienti di sviluppo. 2. Analisi Sintattica: Automi a stati finiti e espressioni regolari. Analisi lessicale e generatori di analizzatori lessicali (Lex e Grep). Grammatiche libere, loro proprietà, automi a pila e aspetti sintattici dei linguaggi di programmazione. Tecniche di analisi sintattica LL e LR, algoritmi di parsing, e generatori di analizzatori sintattici (YACC , XML e DTD). 3. Traduzione: Forme intermedie e traduzione diretta dalla sintassi. Cenno all'ottimizzazione del codice e alla gestione degli errori. Testi consigliati * J. E. Hopcroft, R. Motwani, J.D. Ullman, Introduction to Automata Theory, Languages, and Computation,2-nd edition, Addison Wesley, 2001. http://wwwdb.stanford.edu/~ullman/ialc.html * A. V. Aho, R. Sethi, J. E. Hopcroft, Compilers, Principles, Techniques and Tools, Addison Wesley, 1986. * D. Grune, H. Bal, C. Jacobs and K. Langendoen, Modern Compiler Design, John Wiley, 2000. http://www.cs.vu.nl/~dick/MCD.html Modalità d'esame Prova orale sugli argomenti trattati e presentazione di un approfondimento concordato con il docente o di un progetto sviluppato in laboratorio. Logica matematica II Crediti: 6 Conoscenze: Il corso si propone di analizzare alcuni argomenti di logica matematica legati alla teoria della dimostrazione in logiche non classiche (intuizionismo e logiche modali). Verranno presentati per tali logiche sistemi deduttivi a tableaux. Abilità: Si prevede che lo studente acquisisca capacità nel sintetizzare algoritmi, nella formalizzazione e costruzione di dimostrazioni e loro verifica. Docente: Ugo Moscato Programma: 1. 2. 3. 4. 5. 6. 7. 8. Riepilogo dei principali risultati del corso di Logica Matematica I. Sintesi logica egli algoritmi Introduzione alla logica intuizionista; sintassi a tableaux e semantica con modelli di Kripke. Teoremi di validità e completezza. Introduzione alla logica modale S4; sintassi a tableaux e semantica con modelli di Kripke. Teoremi di validità e completezza. Rapporti fra S4 e la logica intuizionista Cenni a estensioni dell'intuizionismo e di S4. Testi consigliati: tbd Modalità di esame: l’esame consiste in una prova scritta propedeutica all'ammissione alla prova orale. Link al corso: nessuno "METODI FORMALI DELL'INFORMATICA" Lucia Pomello Fondamentale dell'Orientamento 'Metodi e Modelli per Sistemi Complessi e Intelligenti'. 6 crediti Conoscenze Vengono presentati metodi e tecniche formali per la specifica e lo sviluppo di modelli di sistemi concorrenti e l'analisi delle loro proprietà. Viene fornita una panoramica dei principali modelli, considerando in particolare le reti di Petri e i calcoli di processi e di agenti. Abilità Lo studente deve acquisire le basi metodologiche per lo sviluppo e la progettazione di modelli di sistemi concorrenti e la verifica delle loro proprietà; ed essere in grado di mettere in relazione e discutere i diversi approcci al modello di sistemi concorrenti. Programma 1. Il processo di sviluppo e progettazione di sistemi interagenti. - L'osservatore, il modello e i punti di vista. - Le "discipline della comunicazione" di C.A. Petri. - Rassegna delle tecniche formali di specifica e disegno. - La semantica della concorrenza, e l'equivalenza all'osservazione. 2. La teoria generale delle reti di Petri: - la struttura di un sistema e le sue proprietà (reti elementari e reti PT). - il comportamento non sequenziale e i processi non sequenziali. - proprietà di comportamento (vivezza, assenza di deadlock e sicurezza) e verifica. - specifica e sintesi. - Reti ad alto livello, reti stocastiche e reti temporizzate: cenni. 3. Calcoli di processi e agenti. - i modelli di processi comunicanti (i CCS, i CSP e le algebre di processi); - i CCS e líequivalenza allíosservazione - Reti di Petri e CCS: equivalenze, modularità e composizionalità. - Introduzione ai sistemi reattivi basati su bigrafi di R. Milner. Testi consigliati: * W. Reisig, G.Rozenberg (Eds.), Lectures on Petri Nets I: Basic Models, Advances in Petri Nets, Lecture Notes in Computer Science vol. 1491, Springer-Verlag 1998. * M. W. Shields, Semantics of Parallelism, Non-Interleaving Representation of Behaviour, Springer-Verlag, 1997. Un elenco di articoli e altri testi consigliati si trova qui. Modalità di esame: Prova orale sugli argomenti trattati e presentazione di un approfondimento concordato con il docente o di un progetto sviluppato in laboratorio. METODI PER LA RAPPRESENTAZIONE DELLA CONOSCENZA Crediti: 6 Conoscenze: Nozioni di base di Logica. Intelligenza Artificiale. Programmazione orientata agli oggetti. Architetture di sistemi. Data Base. Abilità: Ingegneria della conoscenza. Sviluupo di applicazioni di sistemi basati sulla conoscenza. Ambienti di sviluppo di sistemi esperti. Knowledge Management. Docente: Stefania Bandini Programma: Scopo principale di questo corso è quello di presentare modelli, strutture e metodi computazionali per la rappresentazione e il trattamento della conoscenza, secondo gli approcci dell’Intelligenza Artificiale. Questi aspetti sono focalizzati all'analisi, alla progettazione, alla codifica e all'integrazione di sistemi basati sulla conoscenza e sistemi esperti. Per raggiungere questo obiettivo verranno forniti strumenti di natura concettuale, computazionale e metodologica indirizzati a una qualificazione professionale richiesta dal mercato in un settore di consolidamento tecnologico e di espansione applicativa. Oltre a una preparazione sui concetti base provenienti dai metodi e dalle tecnologie della rappresentazione della conoscenza, questo corso si orienta verso problematiche applicative mediante l'analisi delle più significative esperienze realizzate in settori cruciali dell'automazione (sistemi di controllo, ambienti ad alta eterogeneità tecnologica), mediante la sperimentazione di soluzioni computazionali dedicate, e attraverso strumenti di analisi e disegno progettuale che comprendono aspetti architetturali di integrazione con strumenti di connettività (Intranet, Internet), di retrieval (database) e di apprendimento (reti neuronali, algoritmi genetici). Particolare enfasi verrà inoltre data agli aspetti di dimensionamento dei progetti e delle applicazioni, mediante metodi di ingegneria del software adattati alle specifiche caratteristiche dei sistemi basati sulla conoscenza. Infine, verranno introdotti i concetti fondamentali connessi con le tematiche di knowledge management, con particolare riferimento al ruolo che in questo settore giocano i metodi l'ingegneria della conoscenza, gli strumenti dell'Intelligenza Artificiale (es., Case Based Reasoning). Il corso si articola su tre livelli: concettuale, computazionale e metodologico. LIVELLO CONCETTUALE Metodi di appresentazione della conoscenza - formalismi di rappresentazione - case based reasoning - trattamento dell'incertezza: concetti e strumenti (fuzzy, reti bayesiane, fattori di certezza) Introduzione ai sistemi basati sulla conoscenza: breve storia e concetti di base - caratteristiche di rappresentazione - caratteristiche architetturali - caratteristiche computazionali - sistemi esperti LIVELLO COMPUTAZIONALE Strumenti computazionali - ambienti di sviluppo per sistemi esperti - presentazione e sperimentazione delle shell CLIPS e JESS - problematiche d'integrazione - sistemi basati sulla conoscenza ad architettura ibrida - conoscenza su Internet Nuove generazioni di sistemi basati sulla conoscenza - sistemi di seconda generazione e model based - basi di conoscenza distribuite - agenti intelligenti LIVELLO METODOLOGICO Applicazioni di sistemi basati sulla conoscenza Individuazione, analisi e valutazione di domini applicativi - casi paradigmatici - classificazione delle applicazioni e relative caratteristiche (finanza, controllo industriale, medicina, progettazione, etc.) Ingegneria della conoscenza - classificazione di problemi - acquisizione ed elicitazione della conoscenza - tecniche di acquisizione - strumenti automatici per l'acquisizione Sistemi esperti e ingegneria del software - caratteristiche dei sistemi basati sulla conoscenza - dal ciclo di vita alla pianificazione progettuale - valutazione e dimensionamento di progetti applicativi Dall'ingegneria della conoscenza al knowledge management - definizioni di knowledge management - problematiche di rappresentazione e coordinamento - architetture e tecnologie di supporto e di gestione Prova d’esame: L’esame finale consta di due prove. Per la prima è previsto lo svolgimento di un progetto da svilupparsi in un ambiente di programmazione dedicato all’aimplementazione di sistemi basati sulla conoscenza (shell JESS in Java o CLIPS in C) su temi che verranno concordati direttamente con gli esaminandi durante il corso o durante il ricevimento studenti direttamente con il docente. La seconda prova è orale e prevede un colloquio su argomenti trattati durante il corso e documentati nei testi in adozione. Testi in adozione: S.J-. Russell, P. Norvig, Intelligenza Artificiale: un approccio moderno, UTET, (Torino), 1998 . P. Jackson, Introduction to Expert Systems, Addison Wesley, 1999. F. Puppe, "Expert Systems: a Systematic Introduction", Springer Verlag, 1993. G. Berini, G. Guida, Ingegneria della Conoscenza, Egea ed., Milano, 2000. Modalità di esame: L’esame finale consta di due prove. Per la prima è previsto lo svolgimento di un progetto da svilupparsi in un linguaggio a oggetti già noto o in un ambiente di programmazione dedicato all’aimplementazione di sistemi basati sulla conoscenza (shell JESS in Java o CLIPS in C) su temi che verranno concordati direttamente con gli esaminandi durante il corso o durante il ricevimento studenti direttamente con il docente. La seconda prova è orale e prevede un colloquio su argomenti trattati durante il corso e documentati nei testi in adozione. Robotica Crediti: 6 Conoscenze: lo studente apprende nozioni introdutive di robotica industriale e di percezione artificiale Abilità: mediante il progetto, consistente in una limitata realizzazione su argomenti non coperti durante le lezioni, lo studente apprende ad organizzare il proprio lavoro per raggiungere un preciso obiettivo e a modellizzare il problema per poi tradurre il proprio lavoro in una realizzazione. Docente/i: Domenico G. Sorrenti, con la collaborazione del dr. Fabio Marchese, Lab. Informatica per la Robotica e l'Automazione Programma: ore studio individuale ore lezione contenuti "robotica istituzionale", ovvero contenuti sempre presenti in tutti i corsi introduttivi di robotica (esempi di impiego di robot, cinematica diretta ed inversa, programmazione dei robot, pianificazione delle traiettorie) 17 7 controlli automatici e robotica: controllo indipendente dei singoli giunti di un manipolatore 12 4 percezione (percezione della distanza, della prossimità, del contatto, formazione dell'immagine, sistemi di visione 2D) 16 4 sviluppo del progetto 0 90 45 105 totale ore = 150 ore studio individuale ore lezione contenuti "robotica istituzionale", ovvero contenuti sempre presenti in tutti i corsi introduttivi di robotica 0 0 • impiego di robot nelle applicazioni industriali: esempi, motivazioni 3 1 • cinematica dei bracci: uso delle coordinate omogenee per la rappresentazione di rototraslazioni, convenzioni di Denavit-Hartenberg 8 2 • cinematica diretta ed inversa, con esempio relativo ad uno specifico braccio 4 2 • programmazione dei robot 1 1 • pianificazione delle traiettorie: cenni alla interpolazione lineare nello spazio dei giunti e nello 1 spazio cartesiano 1 controlli automatici e robotica: controllo indipendente dei singoli giunti di un manipolatore 12 4 percezione 0 0 • percezione della distanza, della prossimità, del contatto 1.5 1 • formazione dell'immagine, modelli geometrici della proiezione, calibrazione della proiezione 9 • sistemi di visione 2D binari ed a segmenti (Hyper), cenni ai sistemi di ricostruzione 3D 4.5 1 • cenni ad alcune problematiche ed applicazioni di robotica mobile 1 0 0 90 45 105 sviluppo del progetto totale ore = 150 2 Testi consigliati: 1. K. S. Fu, R. C. Gonzales, C. S. G. Lee, "Robotics: Control, Sensing, Vision and Intelligence", McGraw-Hill, 1987 2. J. J. Craig, "Introduction to Robotics: Mechanics and Control" 2nd ed., Addison-Wesley, 1989 3. G. Ferretti, G. Magnani, "Modellistica e controllo dei servomeccanismi di posizione con motori a magneti permanenti", Pitagora Editrice Bologna Modalità di esame: per superare l’esame si sviluppa un piccolo progetto e si sostiene una prova orale sulle parti non coperte dal progetto. Il progetto verte solitamente su tematiche più avanzate di quelle coperte nelle lezioni e può essere sviluppato in piccoli gruppi; l'orale è comunque individuale. Il progetto è auspicabile che venga condotto congiuntamente per più corsi (ad esempio Laboratorio di progettazione, Sistemi in tempo reale, etc.) Link al corso: http://old.disco.unimib.it/robotica Teoria dell’informazione Crediti: 6 Conoscenze: concetti di base di teoria dei codici, teoria dell’informazione e crittografia Docente: Giancarlo Mauri Programma: 1. 2. Introduzione: sorgente, canale, codifica Teoria dei codici Codici riconoscitori e correttori di errore Codici a lunghezza variabile Codici di Huffman Processi di Markov 3. Teoria dell’informazione Entropia Codici di Shannon-Fano I teorema di Shannon Canale e informazione mutua Capacità di canale II teorema di Shannon 4. Crittografia. Crittosistemi monoalfabetici Crittosistemi polialfabetici Crittosistemi simmetrici: DES e AES One time pad Generatori pseudocasuali Crittosistemi a chiave pubblica RSA Attacchi ad RSA Aspetti teorici: dimostrazioni zero-knowledge e sistemi di prova interattivi Libri di testo Hamming, Coding and Information Theory, Prentice-Hall Ferragina, Luccio, Crittografia, Bollati Boringhieri Dispense a cura del docente Modalità di esame L’esame consiste in una prova orale, che include la discussione di una relazione su un tema di approfondimento concordato col docente.