Algoritmi e strutture dati II Giancarlo Mauri III anno 1 modulo Obiettivi Il corso si prefigge di presentare alcune tecniche speciali di elaborazione, in particolare in relazione a problemi complessi di ottimizzazione, apprendimento e controllo, affrontandone sia gli aspetti teorici che i risvolti applicativi. Contenuti 1. Oltre l’NP-completezza: soluzione approssimata di problemi di ottimizzazione classi di approssimazione, ottimizzazione stocastica, tecniche di ricerca locale (algoritmo di Metropolis, annealing simulato). 2. Programmazione evolutiva: teoria degli algoritmi genetici, operatori e parametri critici, esempi e applicazioni a problemi reali, prospettive e limiti. 3. Reti neurali: il paradigma connessionista; l'ispirazione biologica; il percettrone senza e con strati nascosti; cenni ad altri modelli; dinamica delle reti neurali; apprendimento nelle reti neurali; parametri critici, esempi e applicazioni a problemi reali, prospettive e limiti 4. Apprendimento automatico: .modelli formali, tecniche e strategie di base, strumenti e applicazioni; ambienti software per il learning; tecniche di learning debole e boosting. 5. Teoria computazionale dell'apprendimento: confronto tra modelli formali (modello PAC e varianti, modelli bayesiani) 6. Tecniche fuzzy e loro applicazioni 7. Sviluppi futuri: computazione quantistica e computazione molecolare. Libri di testo M. Mitchell, Introduzione agli algoritmi genetici, Apogeo T. Mitchell, Machine Learning, McGraw Hill Modalità di esame L’esame consiste in una prova orale, che include la discussione di un progetto realizzato dallo studente, anche in gruppo con altri, con l’uso delle tecniche presentate nel corso. Carico didattico Il corso comporta 32 ore di lezione e circa 120 ore di studio individuale e preparazione del progetto (= 6 crediti). Analisi Numerica Prof. Alessandro Russo a.a. 2002-3 Durante il Corso di Analisi Numerica verranno approfonditi alcuni argomenti del Corso di Calcolo Numerico, con particolare riferimento ai metodi iterativi per i sistemi lineari e ai metodi adattivi per l'approssimazione di equazioni differenziali. Architetture (Tecnologie Informatiche per la Comunicazione) Crediti: 6 Conoscenze: Inquadramento e stato dell’arte delle tecnologie per la comunicazione tramite Web. 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, progettare e implementare sistemi client server molto semplici in ambiente Web fisso. Costruire i DTD e i documenti XML. Usare le tecnologie relative ad XML per la costruzione di applicazioni per la gestione di documenti in Internet. Docente/i: H. LeVan Programma: 1) Introduzione, motivazioni, Internet, Web technologies, Web Services, modelli architetturali 2) Linguaggi di markup 3) Introduzione al linguaggio HTML 4) Elementi fondamentali di XML - Costruzione di DTD e documenti XML 5) Programmazione con XML – Il modello DOM 6) Costruzione di applicazioni client-server con servlet 7) Applicazioni con XML e database Testi consigliati: 1) Harvey M. Deitel et al., XML Corso di programmazione, Agogeo (orig. XML How to Program, Prentice Hall), 2001 2) St Laurent and Cerami, Building XML Application, McGraw Hill, 1999 3) Harvey M. Deitel et al., Internet & WWW – How to Program, Prentice Hall, 2000 Modalità di esame: Progetti e prova scritta Link al corso: http://linux.disco.unimib.it/~levan/corsoXML Elaborazione delle immagini AA 2002/03 (1 semestre) Raimondo Schettini - [email protected] Il corso ha l'obiettivo di fornire i fondamenti teorici e pratici per l’elaborazione delle immagini Contenuti del corso • Acquisizione di immagini • Percezione, colorimetria e riproduzione di immagini • Operazioni su immagini, miglioramento, filtraggio e restauro • Estrazione di regioni Estrazione dei contorni • Descrizione di regioni e contorni. • Classificazione e riconoscimento. • Casi studio ed applicazioni (Ricerca per contenuto in database di immagini, videosorveglianza, fotografia digitale,...) Homepage del corso http://www.itim.mi.cnr.it/Staff/Schettini/corsoEI-2002-3/index.htm Fisica Generale 1 ( Complementi ) Crediti : 6 Conoscenze : Padronanza dei concetti base relativi ai fenomeni oscillatori e ondulatori sia in meccanica sia in elettromagnetismo. Abilita` : Analisi e soluzione di semplici problemi riguardanti la fisica dei fenomeni oscillatori e ondulatori. Docente : Mirella Enriotti Programma : - Oscillazioni meccaniche ( l'oscillatore armonico semplice; l'oscillatore armonico smorzato. L'oscillatore armonico forzato. Il fattore di qualita`. La risonanza. Spazio delle fasi : introduzione) - Oscillazioni elettromagnetiche ( il circuito LC, il circuito RLC in serie. Circuiti in c.a. Analisi energetica : potenza attiva e reattiva.) - Onde meccaniche e onde sonore ( derivazione dell'equazione d'onda unidimensionale e studio delle soluzioni. Onde viaggianti e onde stazionarie. Pacchetti d'onda e analisi di Fourier. Dispersione : velocita` di fase e di gruppo. L'energia in un'onda meccanica.) Onde elettromagnetiche ( le equazioni di Maxwell in forma locale; derivazione dell'equazione d'onda. Studio delle onde piane e sferiche. Analisi energetica : il teorema di Poynting ) - Elementi di ottica fisica ( interferenza e polarizzazione ). Testi consigliati : D. Halliday, R. Resnick, K.S. Krane Fisica 1 & 2 (C.E.A.) La Fisica di Feynman (Zanichelli) R. Baierlein Newtonian dynamics ( McGraw Hill) A.P. French Vibration and waves (Chapman & Hall) G. Bekefi, A.H. Barrett Electromagnetic vibrations, waves and radiation (MIT Press) Modalita` di esame : l'esame consiste di una prova scritta che prevede domande a risposta multipla su tutto il programma svolto.Durante il corso gli studenti sono periodicamente invitati a svolgere alcuni problemi a casa. Al momento della valutazione finale si tiene conto dei risultati positivi. FISICA GENERALE II Corso del IV anno del Vecchio Ordinamento Corso del I anno della Laurea Specialistica Secondo modulo - Elettricitá e Magnetismo, Ottica Introduzione - Nozione di misura in Fisica. La legge fisica. La carica elettrica e la legge di Coulomb. – La carica elettrica. Conduttori e isolanti. La legge di Coulomb. La carica e’ quantizzata. La carica si conserva. Il campo elettrico. - Il campo elettrico E di cariche puntiformi. Le linee di forza. Campo elettrico generato da distribuzioni continue. Carica elettrica puntiforme in un campo elettrico. Dipolo. La legge di Gauss. – Il flusso di un campo vettoriale. Il flusso del campo elettrico. La legge di Gauss. Un conduttore carico isolato. Applicazioni della legge di Gauss. Prove sperimentali della legge di Gauss e della legge di Coulomb. Il potenziale elettrico. – Le forze elettrostatiche. L’energia potenziale elettrica. Il potenziale elettrico. Calcolo del potenziale dato il campo. Esempi di calcolo del potenziale elettrico. Superfici equipotenziali. Il calcolo del campo dato il potenziale. Il conduttore isolato. Condensatori e dielettrici. – La capacita’ di un conduttore. Calcolo della capacita’. Condensatori in serie e in parallelo. L’energia immagazzinata in un campo elettrico. Condensatore con dielettrico. Corrente e resistenza. – Correnti elettriche. Densità di corrente. Resistenza, resistività, conducibilitá. La legge di Ohm. Trasferimenti di energia in un circuito elettrico. Circuiti in corrente continua (DC). – La forza elettromotrice. Calcolo della corrente in una singola maglia. Differenze di potenziale. Resistori in serie e in parallelo. Circuiti a molte maglie: leggi di Kirckoff. Circuiti RC: la costante di tempo. Il campo magnetico. – Il campo magnetico B. La forza magnetica su una carica in moto. Cariche in moto circolare. L’effetto Hall. Forza magnetica agente su una corrente. Momento agente su una spira percorsa da corrente. Il dipolo magnetico. La legge di Ampére. – La legge di Biot-Savart. Esempi di applicazioni. Le linee di forza di B. Due conduttori paralleli. La legge di Ampére. Solenoidi e toroidi. La legge dell’induzione di Faraday. - Gli esperimenti di Faraday. La legge di Faraday. La legge di Lenz. Forze elettromotrici derivanti dal moto. Campi elettrici indotti. Proprietá magnetiche della materia. - (Cenni.) L’induttanza. - L’induttanza. Calcolo dell’induttanza. Circuiti RL. Energia immagazzinata nel campo magnetico. Oscillazioni in un circuito LC: trattazioni qualitativa e quantitativa. Circuiti in corrente alternata. - Le correnti alternate. Il circuito RLC serie: descrizione del comportamento con l’uso dei fasori. Potenza nei circuiti in corrente alternata. Le equazioni di Maxwell. - Le equazioni fondamentali dell’elettromagnetismo. Campi magnetici indotti e corrente di spostamento. Le equazioni di Maxwell in forma integrale. Forma differenziale delle equazioni di Maxwell. Onde elettromagnetiche. - Lo spettro elettromagnetico. Generazione di un’onda elettromagnetica. Onde elettromagnetiche ed equazioni di Maxwell. Trasporto di energia e vettore di Poynting. La natura e la propagazione della luce. - La luce visibile. La velocitá della luce. L’effetto Doppler per la luce. Riflessione e rifrazione sulle superfici piane. - Ottica geometrica e ottica ondulatoria. Riflessione e rifrazione. Principio di Huygens. Derivazione della legge della riflessione. Formazione dell’immagine su specchi piani. Derivazione della legge della rifrazione. Riflessione totale. Specchi sferici e lenti. - Specchi sferici. Superfici rifrangenti sferiche. Lenti sottili. Cenno ai sistemi ottici composti e agli strumenti ottici. Interferenza, Diffrazione, Polarizzazione. - (Trattazione elementare.) Luce e Fisica dei quanti. - Radiazione termica. Legge dell’irraggiamento di Planck. Quantizzazione dell’energia. L’effetto fotoelettrico. La teoria dei fotoni di Einstein. La natura ondulatoria della materia. - L’onda di De Broglie. Esperimenti sull’ipotesi di De Broglie. La struttura dell’atomo d’idrogeno. - La teoria di Bohr (cenni). Testo di riferimento Resnik, Halliday, Krane - FISICA 2 - Casa Editrice Ambrosiana FISICA GENERALE II Corso del IV anno del Vecchio Ordinamento Corso del I anno della Laurea Specialistica Primo modulo - Elettronica digitale Introduzione - Sistemi numerici e codici. Circuiti digitali - Elementi logici. Famiglie logiche. Logica combinatoria - Principi di Progetto di Logica Combinatoria. Progetto di Logica Combinatoria con PLD. Logica sequenziale sincrona - Principi di Progetto della Logica Sequenziale Sincrona. Progetto di una logica sequenziale sincrona con macchine a stati. Esempi di progetto di macchine sequenziali sincrone. Progetto di Logica Sequenziale sincrona con PLD (con uso di linguaggi evoluti). Limiti di velocità dei sistemi sequenziali sincroni (metastabilità). Logica sequenziale asincrona - Elementi. Logica cablata versus logica programmata - I microcontrollori. Esempio di progetto di un sistema a microcontroller con l’uso dell’assembler. La progettazione del silicio - Gli ASIC. Aspetti pratici della progettazione digitale. Testo di riferimento: J. F. Wakerly - “DIGITAL DESIGN – Principles and Practices” - Prentice Hall Int Fondamenti Logico-Matematici dell'Informatica (Complementi) 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. Riepilogo dei principali risultati del corso di Logica Matematica I. 2. Sintesi logica degli algoritmi 3. Introduzione alla logica intuizionista; sintassi a tableaux e semantica con modelli di Kripke. 4. Teoremi di validità e completezza. 5. Introduzione alla logica modale S4; sintassi a tableaux e semantica con modelli di Kripke. 6. Teoremi di validità e completezza. 7. Rapporti fra S4 e la logica intuizionista 8. Cenni a estensioni dell'intuizionismo e di S4. Testi consigliati: verranno segnalati durante il corso Modalità di esame: l’esame consiste in una prova scritta propedeutica all'ammissione alla prova orale. Link al corso: Fondamenti Logico-Matematici dell'Informatica (Elementi) Fondamenti Logico-Matematici dell'Informatica (Complementi) 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. Riepilogo dei principali risultati del corso di Logica Matematica I. 2. Sintesi logica degli algoritmi 3. Introduzione alla logica intuizionista; sintassi a tableaux e semantica con modelli di Kripke. 4. Teoremi di validità e completezza. 5. Introduzione alla logica modale S4; sintassi a tableaux e semantica con modelli di Kripke. 6. Teoremi di validità e completezza. 7. Rapporti fra S4 e la logica intuizionista 8. Cenni a estensioni dell'intuizionismo e di S4. Testi consigliati: verranno segnalati durante il corso Modalità di esame: l’esame consiste in una prova scritta propedeutica all'ammissione alla prova orale. Fondamenti Logico-Matematici dell'Informatica (elementi) 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. Si vedano anche: Jeremy Avigad, Logic and Computation, Lecture Notes, Carnegie Mellon University, 2001, http://www.andrew.cmu.edu/~avigad/Teaching/landc_notes.pdf Nuel Belnap, Notes on the Art of Logic, University of Pittsburgh, 1998, ftp://ftp.pitt.edu/users/b/e/belnap/Main Text of NAL.pdf Per la parte monografica: 1. Andrea Asperti e Giuseppe Longo: Categories, Types and Structures, MIT Press, Foundations of Computing Series, 1991, capitolo 8. http://www.di.ens.fr/users/longo/download.html 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 http://www.aminet.org/doc/techreports/mcgill.ca/math/reyes/cognitio.ps 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 BUSINESS INTELLIGENCE Crediti: 6 Conoscenze: Lo studente apprenderà i modelli computazionali e le architetture software impiegate nell’ambito della Business Intelligence. In particolare, verranno affrontate problematiche di Customer Relationship Management (CRM) quali a titolo esemplificativo: customer profiling, customer segmentation, cross-selling, protezione da intrusioni software, ricerca semantica dell’informazione in ambiente WEB, call center management, ... Il corso è organizzato in modo tale da fornire dapprima una concettualizzazione architetturale, una formulazione in termini algoritmico-computazionali per giungere fino al corrispondente deplyement software della problematica affrontata. Le metodologie di base che verranno apprese includono il Text Mining ed il WEB Mining. Abilità: Lo studente acquisirà competenze specifiche che lo porranno in grado di formulare e risolvere problemi di Business Intelligence, ed in termini operativi, di progettare ed implementare algoritmi e sistemi software per la gestione delle relazioni con i clienti on-line, l’analisi di dati aziendali e le decisioni di marketing in condizioni di incertezza. Docente: Stella Programma: 1. Introduzione - Motivazioni - Prospettive - Customer Relationship Management 4. Text Mining - Preprocessing - Importazione e lettura - Customer profiling - Parsing e stemming - Segmentation e cross selling - Feature selection e construction - Antiintrusione - Learning - WEB information retrieval - Classificazione supervisionata - WEB structure analysis - Reti di neuroni artificiali - Call center management - Support Vector Machines 2. Classificazione - Introduzione - Classificazione supervisionata - Classificazione binaria - Performance Evaluation - Recall - Precision - Precision Recall Break Even Point - Classificazione multiclasse - Tasso di errore - Modello concettuale di sistemi di classificazione - Teoria Bayesiana delle Decisioni - Regola di decisione Bayesiana - Classificazione a minimio tasso di errore 5. Progettazione ed Implementazione - Accuratezza e Precisione - Hold Out - K-folds cross validation - Sensitivity e Specificity - Sistemi Software - Matlab - Funzioni di perdita - Precision Recall Break Even Point 3. Modelli Computazionali - Reti di Neuroni Artificiali - Feedforward neural networks - Bayesian confidence propagation neural networks - Polyanalyst 6. Casi di Studio - Personal Mail Assistant - Call Center Management - Customer Profiling - Antiintrusione - Customer Segmentation - Cross Selling - Support Vector Machines - Linear Hard-Limit - Soft Limit - Non Linear Testi consigliati: Slide del docente Modalità di esame: Progetto software e discussione orale Link al corso: www.cnds.disco.unimib.it Informatica applicata (Data Mining) Crediti: 6 Conoscenze: Lo studente apprenderà i principali metodi di determinazione strutturale per la costruzione di reti causali, attraverso gli algoritmi più noti, e i principali algoritmi inferenziali. Inoltre apprenderà metodi atti alla risoluzione di problemi di classificazione, con esempi tratti da vari contesti applicativi, e metodi per la modellizzazione di fenomeni multivariati. Abilità: Lo studente acquisirà competenze specifiche che lo porranno in grado di affrontare e risolvere, in termini operativi, problemi di classificazione, supevisionata e no, e di modellizzazione di fenomeni attraverso metodi di regressione e di reti neurali. Inoltre, lo studente apprenderà l’uso di software specifici, come Hugin, Genie, MLC**, Weka, BNPS e JMP, Matlab . Docente: Enrico Fagiuoli Programma: 1. Algoritmi per inferenza su reti Bayesiane - 4. Classificazione non supervisionata: metodi di Clustering - Definizioni - Algoritmo di Pearl per reti singolarmente connesse - Metodi di clustering e conditioning per reti a - Software per inferenza: Hugin, Genie 2. Learning strutturale di reti - Metodi di aggregazione: distancebased (K-means, K-medoids) - connessione multipla Metodi simulativi: Gibbs sampler Trattamento di variabili continue, nominali, binarie, ordinali - - Metodo di Lauritzen- Spiegelhalter per reti a - - - connessione multipla 5. Generalità Metodi gerarchici: Ward Metodi probabilistici: finite mixtures, EM, metodi di densità. Software per clustering_ JMP. Modelli regressivi multivariati: complementi - Distribuzioni t e F Analisi della varianza - Algoritmo di Cheng - - Software per learning e analisi: BNPC. - 3. Classificazione supervisionata - Analisi dei residui: normal quantile plot, Kolmogorov-Smirnov, ShapiroWilk Analisi degli outliers: residui studentizzati, D di Cook - Naive Bayes Metodi risolutivi: OLS, WLS - Test per lack of fit Tree augmented Naive Bayes - Cenno alla teoria delle probabilità imprecise - - - Collinearità: componenti principali, VIF. Classificatori credali: - Software per regressione: JMP. Naive Credal classifier 6. Reti neurali Tree-augmented Credal classifier - Learning strutturale mediante algoritmo di ChowLiu - Multi net classifier - Software per classificazione: MLC**, Weka, BNPP Generalità - Software per reti neurali: Matlab Testi consigliati: Slide pdf disponibili sul sito Modalità di esame: Applicazione a casi di studio delle tecniche apprese (con report dei risultati) e prova orale Link al corso: www.cnds.disco.unimib.it UNIVERSITÀ DEGLI STUDI DI MILANO- BICOCCA CORSO DI LAUREA E DIPLOMA IN INFORMATICA INFORMATICA APPLICATA (INFORMATICA MEDICA) 2° SEMESTRE Docente: prof. Francesco Sicurello Programma 1. Concetti di Informatica Medica - Dati, informazioni e conoscenza in medicina - Nomenclatura medica e il problema della codifica - Sistemi di classificazione in medicina (ICD9-CM,SNOMED, ecc.) 2. Record medico e Patient Data Card - Libretto sanitario individuale - Cartelle cliniche - Schede ambulatoriali - Multimedialità del record medico - Tecnologie di smart card 3. Data base clinico-sanitari - Archivi di reparto - Archivi di laboratorio - Archivi ambulatoriali - Archivi radiologici - Archivi del medico di base - Archivi epidemiologici 4. DBMS e ambienti di sviluppo orientati al mondo sanitario - Relazionalità e gerarchicità - Struttura data base clinici - Data base multimediali - Generatori di applicazioni sanitarie - 4 GL (es. M – SQL) - Programmazione ad oggetti in Informatica Medica 5. Sistemi informativi in medicina - Sistemi informativi ospedalieri - Sistemi informativi clinici - Sistemi informativi in radiologia (PACS/RIS) - Workstation cliniche multimediali - Sistemi informativi sanitari (ASL, distretti, epidemiologici) 6. Telemedicina e Internet in sanità - Definizione e applicazioni di telemedicina - Teleconsulto/telediagnosi medica - Telemonitoraggio/teleassistenza sanitaria - Sistemi di Telemedicina in: Telecardiologia, teleradiologia, telepatologia,ecc. - Siti web in medicina e portali in sanità (es. Neuroweb) - Motori di ricerca orientati alle specialità mediche 7. Analisi Dati e Intelligenza Artificiale in medicina - Elementi su metodi statistici in bio-medicina ed epidemiologia - Software statistici in bio-medicina - Reti neurali e loro applicazioni in campo medico - Cenni su data mining - Conoscenza e strutturazione del sapere medico - Rappresentazione della conoscenza medica - Sistemi esperti in medicina - Integrazione di sistemi di basi di dati e di conoscenza medica 8. Interrelazione ed integrabilità tra Informatica Medica, Bio e Neuroinformatica - Banche dati genomiche - Record medico ed informazioni genomiche - Aspetti di neuroinformatica Complementi di Ingegneria del Software Laurea Specialistica (6 crediti) professore Mauro Pezzè a.a. 2002-2003 ________________________________________________________________________________ Programma del corso o La gestione del processo di sviluppo del software o Modelli avanzati di sviluppo o Specifica dei requisiti: scelte e compromessi o Progetto e architetture software o Controllo di qualità del software o Manutenzione, evoluzione e re-ingegnerizzazione ________________________________________________________________________________ Libri consigliati Ian Sommerville Software Engineering 6th edition Addison Wesley, 2001 Hans Van Vliet Software Engineering 2nd edition John Wiley,2000 Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli Fundamentals of Software engineering 2nd edition Prentice Hall, 2003 ________________________________________________________________________________ Modalità d’esame Da definire ________________________________________________________________________________ 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 - Introduzione all’Ingegneria della Conoscenza Seconda Parte – Intelligenza Artificiale Distribuita e Sistemi Multi Agente - Principi generali dei sistemi multiagente - 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 – Progettazione 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’implementazione 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. CORSO DI INTERAZIONE UOMO MACCHINA Prof. R.Polillo PROGRAMMA DEL CORSO Il corso è organizzato in una parte generale di inquadramento, e in una parte monografica: Prima Parte: Introduzione al design dell'interazione uomo-computer • • • • • • • • • • • La nozione di usabilità: definizione di usabilità; perchè progettare sistemi usabili è difficile. Esempi tratti dal design degli oggetti quotidiani e dal software. 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. Modelli dell'utente: chi è l'utente? Aspetti percettivi, cognitivi, culturali. Valutazioni di usabilità: come si valuta la usabilità di una applicazione software. L'importanza della prototipazione. Modelli di sviluppo iterativi e a waterfall. 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. La comunicazione visiva e il design del software: nozioni di psicologia della percezione; 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. Il design dell'interazione: le linee guida della ISO9241-10. Discussione di esempi vari. Tempo, cambiamento, movimento. Criteri generali da seguire nella progettazione delle interfacce. Il trattamento degli errori: la nozione di errore; vari tipi di errori; la gestione degli errori. Discussione di esempi vari. Aiutare l'utente: sistemi di help, esigenze e tipologia; manuali on-line. Discussione di esempi vari. Parte Seconda: Il design delle applicazioni web • • • • La usabilità dei web Un modello di qualità per le applicazioni web (comunicazione, funzionalità, contenuto, usabilità, gestione, accessibilità di un sito web) Architettura dell'informazione Discussione di esempi reali di applicazioni web complesse Per maggiori informazioni vedere http://www.rpolillo.it/IUM Linguaggi di Programmazione (complementi) 6 crediti Prof. Carla Simone Scopo del corso Il corso affronta i temi della realizzazione di sistemi informatici a supporto del coordinamento di attivita’ svolte da attori (umani e/o artificiali) in modo intrinsecamente distribuito, e che sono caratterizzati da requisiti di flessibilita’ funzionale, adattativita’ al contesto operativo e da intefacce uomo/macchina innovative. Il punto di vista e’ quello delle caratteristiche dei linguaggi di programmazione necessarie a questo scopo. Conoscenze: Il corso si propone come naturale complemento di altri corsi, di base e specialistici, orientati alla progettazione e alla implementazione di sistemi informatici: Programmazione, Linguaggi di Programmazione (elem), Sistemi operativi e reti, Sistemi distribuiti, Ingegneria del Software, Basi dati e sistemi informativi, e per alcuni aspetti, Intelligenza Artificiale, Interazione Uomo Macchina e Realta’ Virtuale. Le conoscenze acquisite riguardano la comprensione dei problemi di realizzazione dei sistemi informatici illustrati precedentemente e la conoscenza dei costrutti linguistici necessari per costruirli nel rispetto dei loro requisiti fondamentali. I principali costrutti riguardano: - modelli e linguaggi di coordinamento - uso della riflessivita’ nella programmazione - semplici inferenze basate su regole - interfacce utente 3D Capacita': Utilizzo degli aspetti del linguaggio Java o di sue estensioni per trattare: - la riflessivita’ - sistemi a regole: JESS - interfacce 3D: Java3D Programma: Modulo 1: Modelli e linguaggi di coordinamento: Concetti di base e criteri di classificazione Principali linguaggi di coordinamento Modulo 2: Concetti di base della riflessivita’ nei linguaggi di programmazione La riflessivita’ in Java Modulo 3: Concetti di base dei sistemi a regole Il linguaggio JESS Modulo 4: Concetti di base della programmazione di interfacce 3D La libreria Java3D TESTI DI RIFERIMENTO I materiali didattici verranno indicati durante le lezioni e pubblicati nel sito del corso a partire da marzo: http://old.disco.unimib.it/simone/ldp_com/index.htm MODALITA’ DI ESAME L’esame consiste nella preparazione di un progetto che utilizza le capacita’ indicate sopra, coprendo almeno due dei tre aspetti citati. Il progetto puo’ essere richiesto alla docente o proposto dagli studenti, e deve essere svolto in gruppi di 2/3 studenti (salvo casi particolari da concordarsi con la docente). Il progetto puo’ essere valido anche per il Laboratorio di Informatica (Progettazione) tenuto dal Prof. Tisato, se risponde a requisiti che verranno pubblicati tempestivamente. Parte del progetto puo’ essere sostituito dallo studio di materiali, che consentono un approfondimento teorico di un argomento del corso, concordati con la docente. <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> "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. <!doctype html public "-//w3c//dtd html 4.0 transitional//en">"METODI FORMALI DELL'INFORMATICA" Lucia Pomello 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, i calcoli di processi e in generale i sistemi reattivi. 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à del comportamento (vivezza, assenza di deadlock e sicurezza): analisi e verifica. - specifica e sintesi. - Reti ad alto livello, reti stocastiche e reti temporizzate: cenni. 3. Calcoli di processi e sistemi reattivi. - 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: Verrà segnalata una selezionie di capitoli di libri, di articoli scientifici e di slides, alcuni dei quali tratti da: * W. Reisig, G.Rozenberg (Eds.), Lectures on Petri Nets I: Basic Models, Lectures on Petri Nets II:Applications, Advances in Petri Nets, Lecture Notes in Computer Science vol. 1491, 1492, Springer-Verlag 1998. * C. Girault, R. Valk, Petri Nets for Systems Engineering, A Guide to Modeling, Verification, and Applications, Springer Verlag, 2003. * R. Milner, A Calculus of Communicating Systems, Lecture Notes in Computer Science vol. 92, Springer-Verlag 1980. 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 neurali, 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 dell’ingegneria della conoscenza e gli strumenti dell’Intelligenza Artificiale (es., Case Based Reasoning). Il corso si articola su tre livelli: concettuale, computazionale e metodologico. LIVELLO CONCETTUALE Metodi di rappresentazione 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 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 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 di programmazione già noto o in un ambiente di programmazione dedicato all’implementazione 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, anno accademico 2002/03 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 ad anteporre una fase di modellizzazione, anche analitica se utile, di un problema prima della sua in una realizzazione. Docente/i Domenico G. Sorrenti, con la collaborazione del dr. Fabio Marchese Obiettivi e organizzazione del corso La Robotica è una area rilevante sia per l’industria che produce mezzi di produzione sia per i settori industriali in cui questi mezzi vengono utilizzati. Nel futuro, con l’apparire di soluzioni robotiche per problemi più complessi, crescerà la rilevanza della robotica anche in altri settori come l’agricoltura, la gestione della casa, l’industria spaziale (sia per l’esplorazione che per le attività sulle stazioni orbitanti), l’esplorazione sottomarina, il monitoraggio di impianti ad alto rischio (impianti chimici, centrali nucleari, etc.) e l’industria dell’intrattenimento (si pensi, ad esempio, all’iniziativa RoboCup sui robot calciatori). Il corso, dato il limitato tempo a disposizione, ha lo scopo di illustrare alcuni dei molti argomenti connessi con la Robotica, che è fortemente interdisciplinare. In particolare ci si concentrerà sugli aspetti fondamentali della robotica industriale e sui sensori tipicamente usati nella robotica, con maggior attenzione ai sistemi di visione artificiale. Approfondimenti su tematiche più avanzate saranno possibili al di fuori del programma coperto dalle lezioni, durante lo svolgimento di un progetto. Durante lo svolgimento del corso verrà organizzato un breve ciclo di seminari relativi ad aspetti teorici, tecnologici e pratici connessi con il controllo di assi di movimentazione (si veda la articolazione del corso al punto "Controllo del movimento con controllo indipendente dei singoli giunti"). Si cercherà di organizzare, anche successivamente al periodo delle lezioni, alcune visite tecniche ad aziende produttrici di robot industriali e/o ad installazioni significative. Prerequisiti È suggerita, ma non obbligatoria, una precedente esposizione alle seguenti tematiche: algebra delle matrici, calcolo delle probabilità e statistica, teoria dei sistemi, controlli automatici, elaborazione delle immagini. Programma ore studio individuale ore lezione contenuti robotica industriale 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 82 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 spazio cartesiano 11 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 92 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 sviluppo del progetto 0 90 totale ore = 150 45 105 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, Elaborazione delle immagini, 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. Introduzione: sorgente, canale, codifica 2. 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. Corso: Teoria dell'Informazione (Sicurezza e Crittografia) Crediti: 6 Docente: Claudio Ferretti Modalita' d'esame: breve prova scritta teorica e progettino Il corso, di nuova istituzione, verra' erogato per la prima volta nel secondo semestre dell'anno 2002/2003. I dettagli dei contenuti sono in fase di definizione, ma saranno caratterizzati come segue: - le conoscenze utili alla comprensione dei contenuti sono quelle del corso di Teoria dell'Informazione (Elementi), assieme a cui questo corso manterra' un coordinamento - verranno approfonditi aluni aspetti di taglio teorico dei sistemi crittografici, simmetrici e a chiave pubblica - si presenteranno le caratteristiche tecnologiche di alcune implementazioni di tali sistemi, con riferimento agli standard piu' diffusi - si inseriranno le caratteristiche dei crittosistemi nel piu' ampio problema della sicurezza: la crittografia offre alcune garanzie, ad esempio, per la riservatezza dei dati e l'autenticazione, ma le architetture software di cui questi strumenti diventano parte possono introdurre punti deboli - si definiranno alcune categorie che classificano le vulnerabilita': vulnerabilita' locali e remote, virus e worm, cavalli di troia, blocchi ai servizi, ad esempio - per ogni categoria si analizzeranno casi di studio e possibili difese, tra cui: i buffer overflow e l'analisi del codice, l'analisi statistica delle comunicazioni cifrate - con maggior dettaglio, si analizzeranno i problemi di sicurezza relativi ad alcuni sistemi di rete - infine, si presenteranno alcune esigenze organizzative volte a tutelare la sicurezza dei sistemi informatici; in particolare si presenteranno le procedure di diffusione e reperimento di dati sulle vulnerabilita'.