Programmi e siti web dei corsi - Laurea in Informatica A.A 2001

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.