presentazione dei corsi di laurea in informatica (laurea di … ai corsi di studio in... ·...

87
1 Presentazione dei Corsi di Laurea in Informatica (Laurea di Primo livello e Laurea Specialistica) Gli strumenti informatici sono entrati in maniera così pervasiva nella vita quotidiana che si rischia di non percepirli come il prodotto tangibile di uno sforzo progettuale articolato e complesso. L’Informatica è appunto la disciplina che organizza questo sforzo e lo sostiene. Per svolgere questo compito l’Informatica deve affrontare tematiche di ricerca e di sviluppo che spaziano dalla progettazione di strumenti tecnologici per la comunicazione e l’elaborazione dell’informazione e lo studio dei loro fondamenti, fino ai metodi ed ai meccanismi per un loro efficace utilizzo da parte di svariate classi di utenti: ricercatori e professionisti in discipline scientifiche, ingegneristiche ed umanistiche, strutture organizzative, comunità, utenti individuali. Lo studio dell’Informatica è un affascinate percorso tra questi due poli: esso offre allo studente oggi, al professionista e ricercatore domani, la possibilità di operare costruttivamente all’interno di una disciplina che, interagendo con discipline molto diversificate, è alla base dei principali processi di innovazione che cambiano in modo continuo il contesto in cui viviamo. Corsi di Studio in Informatica CORSO DI LAUREA DI PRIMO LIVELLO IN INFORMATICA L’obiettivo prioritario del Corso di Laurea di primo livello in Informatica, la cui durata è di norma di tre anni, è di fornire professionalità immediatamente spendibili sul mercato del lavoro: obiettivo particolarmente rilevante, data la continua richiesta di esperti informatici verificabile oggi e prevedibile nei prossimi anni. Il Corso, non si limita a formare “buoni programmatori”, ma garantisce anche una preparazione di base e metodologica adeguata ad assumere ruoli di rilievo come analista, progettista, e gestore di sistemi informatici. Grazie all’integrazione di teoria e pratica, saldate da una solida base matematica, nasce una "nuova figura di informatico", dotato della versatilità e flessibilità necessarie per affrontare problemi sempre nuovi con tecniche e metodologie di avanguardia. Sono previsti tre percorsi: - Metodi e Modelli per l'Informatica (MM): ha l’obiettivo di approfondire la conoscenza delle metodologie di base dell’Informatica, e di fornire la capacità di applicarle alla modellazione di sistemi complessi - Progetto e Sviluppo di Sistemi Informatici (PS): ha l’obiettivo di approfondire la conoscenza delle tecnologie dell’Informatica, con particolare attenzione al software, e di fornire la capacità di applicarle nella progettazione e nella realizzazione di sistemi informatici. - Tecnologie Informatiche per la Finanza e la Gestione (FG): ha l’obiettivo di fornire una conoscenza approfondita degli strumenti matematici e informatici relativi alla finanza e alla gestione di impresa, e la capacità di utilizzarli nella soluzione di problemi applicativi. È comunque consentito allo studente di proporre un proprio curriculum personalizzato, che è soggetto all’approvazione da parte delle strutture didattiche competenti. Al termine del Corso di Laurea lo studente deve svolgere un’attività autonoma di studio e progettazione anche presso Agenzie o Enti esterni. La Laurea di primo Livello in Informatica consente l'accesso, senza debiti formativi, ai corsi di Laurea Specialistica in Informatica e in Teoria e Tecnologia della Comunicazione attivati presso questo Ateneo. Ulteriori informazioni sul Corso di Laurea di Primo livello sono reperibili nel relativo Regolamento degli Studi (reperibile alla sezione ‘didattica’ del sito web http://www.disco.unimib.it

Upload: lydiep

Post on 08-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

1

Presentazione dei Corsi di Laurea in Informatica

(Laurea di Primo livello e Laurea Specialistica)

Gli strumenti informatici sono entrati in maniera così pervasiva nella vita quotidiana che si rischia di non percepirli come il prodotto tangibile di uno sforzo progettuale articolato e complesso. L’Informatica è appunto la disciplina che organizza questo sforzo e lo sostiene. Per svolgere questo compito l’Informatica deve affrontare tematiche di ricerca e di sviluppo che spaziano dalla progettazione di strumenti tecnologici per la comunicazione e l’elaborazione dell’informazione e lo studio dei loro fondamenti, fino ai metodi ed ai meccanismi per un loro efficace utilizzo da parte di svariate classi di utenti: ricercatori e professionisti in discipline scientifiche, ingegneristiche ed umanistiche, strutture organizzative, comunità, utenti individuali. Lo studio dell’Informatica è un affascinate percorso tra questi due poli: esso offre allo studente oggi, al professionista e ricercatore domani, la possibilità di operare costruttivamente all’interno di una disciplina che, interagendo con discipline molto diversificate, è alla base dei principali processi di innovazione che cambiano in modo continuo il contesto in cui viviamo.

Corsi di Studio in Informatica

CORSO DI LAUREA DI PRIMO LIVELLO IN INFORMATICA

L’obiettivo prioritario del Corso di Laurea di primo livello in Informatica, la cui durata è di norma di tre anni, è di fornire professionalità immediatamente spendibili sul mercato del lavoro: obiettivo particolarmente rilevante, data la continua richiesta di esperti informatici verificabile oggi e prevedibile nei prossimi anni. Il Corso, non si limita a formare “buoni programmatori”, ma garantisce anche una preparazione di base e metodologica adeguata ad assumere ruoli di rilievo come analista, progettista, e gestore di sistemi informatici. Grazie all’integrazione di teoria e pratica, saldate da una solida base matematica, nasce una "nuova figura di informatico", dotato della versatilità e flessibilità necessarie per affrontare problemi sempre nuovi con tecniche e metodologie di avanguardia. Sono previsti tre percorsi: - Metodi e Modelli per l'Informatica (MM): ha l’obiettivo di approfondire la conoscenza delle metodologie di base dell’Informatica, e di fornire la capacità di applicarle alla modellazione di sistemi complessi - Progetto e Sviluppo di Sistemi Informatici (PS): ha l’obiettivo di approfondire la conoscenza delle tecnologie dell’Informatica, con particolare attenzione al software, e di fornire la capacità di applicarle nella progettazione e nella realizzazione di sistemi informatici. - Tecnologie Informatiche per la Finanza e la Gestione (FG): ha l’obiettivo di fornire una conoscenza approfondita degli strumenti matematici e informatici relativi alla finanza e alla gestione di impresa, e la capacità di utilizzarli nella soluzione di problemi applicativi. È comunque consentito allo studente di proporre un proprio curriculum personalizzato, che è soggetto all’approvazione da parte delle strutture didattiche competenti. Al termine del Corso di Laurea lo studente deve svolgere un’attività autonoma di studio e progettazione anche presso Agenzie o Enti esterni. La Laurea di primo Livello in Informatica consente l'accesso, senza debiti formativi, ai corsi di Laurea Specialistica in Informatica e in Teoria e Tecnologia della Comunicazione attivati presso questo Ateneo. Ulteriori informazioni sul Corso di Laurea di Primo livello sono reperibili nel relativo Regolamento degli Studi (reperibile alla sezione ‘didattica’ del sito web http://www.disco.unimib.it

2

CORSO DI LAUREA SPECIALISTICA IN INFORMATICA

Il Corso di Laurea Specialistica in Informatica, la cui durata è di norma di due anni, ha l’obiettivo di assicurare allo studente una elevata padronanza di metodi e contenuti scientifici generali, l’acquisizione di specifiche conoscenze professionali e la capacità di svolgere ruoli di elevata responsabilità nella ricerca, nello sviluppo di tecnologie innovative, nella progettazione e gestione di sistemi informatici complessi. La Laurea Specialistica in Informatica prevede cinque percorsi formativi: 1) Tecnologie Informatiche per la Finanza e la Gestione (FG). Obiettivo principale di questo percorso è formare una figura professionale di informatico in grado di comprendere e gestire lo sviluppo di progetti e l’applicazione di strumenti informatici evoluti nel settore finanziario e gestionale, attraverso l’integrazione di competenze informatiche con competenze specifiche di questo settore. Questo percorso ha inoltre l’obiettivo di formare figure professionali altamente qualificate nel contesto della finanza come intermediari finanziari (banche, assicurazioni, Società di Intermediazione Bancaria, Società di Gestione Risparmi ) e in quello della gestione rivolto ad aziende sia industriali che di servizio per lo sviluppo e la gestione di sistemi ERP (Enterprise Resource Planning). 2) Metodi e Modelli per l’Informatica (MM). Obiettivo di questo percorso è fornire una conoscenza approfondita delle basi teoriche dell’informatica e della natura degli oggetti di cui si occupa (informazione e suo trattamento, algoritmi, modelli computazionale, programmi e processi di computazione), flessibilità e capacità di tenersi aggiornati sui progressi della scienza di base e della sua applicabilità a problemi del “mondo reale”. Inoltre questo percorso mira all’acquisizione di competenze trasversali di natura metodologica e modellistica per la costruzione di modelli computazionali di sistemi complessi, instabili e caotici a partire da problemi reali, l’applicazione di metodi computazionali e strategie di risoluzione di problemi complessi e la produzione e analisi di simulazioni. Infine il percorso mira all’acquisizione di specifiche abilità di natura scientifica per affrontare aree tematiche di natura interdisciplinare all’avanguardia nella ricerca informatica con forti ricadute applicative nella moderna società (calcolo molecolare e quantistico, calcolo concorrente, analisi dei processi biologici e molecolari in bioinformatica, teoria delle informazioni in Internet ...) 3) Progettazione di Sistemi informativi (PSI). In virtù del ruolo centrale che il sistema informativo sta assumendo nei sistemi organizzativi, sia pubblici che privati, questo percorso formativo è altamente interdisciplinare, e richiede, accanto a solide competenze tecnologiche, che permettono di scegliere le migliori tecnologie di rete, di infrastruttura, di software di base e applicativo ai fini della erogazione dei servizi al sistema organizzativo, competenze nell’area organizzativa, nell’area dei linguaggi di specifica e nella reingegnerizzazione dei processi aziendali, nell’area delle risorse umane, nell’area economica, per essere in grado di utilizzare il budget a disposizione in maniera efficiente, nell’area della qualità. I principali sbocchi professionali di questo percorso riguardano anzitutto l’area della pianificazione, progettazione e gestione di sistemi informativi, nelle quali viene chiesto al professionista di adottare un approccio sistemico nel progettare insieme organizzazione, tecnologie informatiche, risorsa umana, tenendo conto delle esigenze dell’utente finale. Ulteriori profili riguardano la gestione di progetti di innovazione, l’analisi dell’organizzazione, l’auditing di sistemi informativi, il controllo di gestione. 4) Intelligenza Artificiale (IA). Obiettivo principale è quello di immettere, in un mercato del lavoro caratterizzato da alta competitività e da forti pressioni al cambiamento, qualificate figure professionali in grado di elaborare visioni articolate di problemi e soluzioni fortemente innovative, mediante una acquisita familiarità con i più recenti temi della ricerca scientifica ed una solida base tecnologica. Il percorso rafforza la sua vocazione di riflessione scientifica e sperimentale coniugandola con aspetti interdisciplinari che permettono l’interazione con molteplici contesti culturali extra-tecnologici e metodologici. Attraverso l’acquisizione di competenze nel campo della gestione e del trattamento della conoscenza (fondamentali per affrontare problematiche di automazione di elevata complessità), i principali sbocchi professionali cui questo percorso si rivolge riguardano principalmente aziende in settori specializzati e ad alto impatto multidisciplinare (produzione industriale e servizi) e aziende impegnate nel disegno di nuove opportunità di business. 5) Progettazione di Sistemi Embedded (PSE). Obiettivo di questo percorso è fornire capacità di modellazione di sistemi “fisici” che il sistema informatico deve osservare e controllare, basi metodologiche e tecnologiche per la progettazione e lo sviluppo di sistemi software efficienti e affidabili, attitudine progettuale orientata alla scelta di soluzioni tecnologiche e architetturali “cost-effective”, competenze di base sulle tecnologie hardware e firmware di ampio uso, sensibilità alle problematiche tipiche di sistemi in tempo reale e competenze specifiche su alcuni domini applicativi (image processing, visione e telecomunicazioni). Gli sbocchi professionali cui questo percorso si rivolge sono le aziende produttrici in settore applicativi specifici (meccanica, sensoristica,

3

strumentazione, automazione, automobile, ...), società di progettazione e sviluppo software operanti nell’area embedded, telecomunicazioni (dispositivi, reti e servizi), oltre al settore della ricerca di base ed industriale. I Percorsi sono articolati in una parte comprendente attività formative comuni e una parte dedicata ad attività formative legate al percorso formativo specifico. Ciascun percorso prevede scelte opzionali che potranno essere esercitate dallo studente per definire il proprio Piano degli Studi che deve consentire allo studente di acquisire almeno 300 CFU, compresi quelli già acquisiti e riconosciuti validi ai fini della Laurea Specialistica. Ulteriori informazioni sul Corso di Laurea Specialistica in Informatica sono reperibili nel relativo Regolamento degli Studi (reperibile alla sezione ‘didattica’ del sito web http://www.disco.unimib.it).

4

Insegnamenti del Corso di Laurea di Primo Livello in Informatica

A.A. 2004/2005

I anno

Insegnamento- S. S. D. - CFU

Algoritmi e Strutture Dati (Elementi) INF/01 6 Analisi Matematica 1 ( Elementi) MAT/05 6 Architettura degli Elaboratori ING-INF/05 6 Architettura delle Reti ING-INF/05 6 Basi di Dati ( Elementi) INF/01 6 Informatica Generale INF/01 6 Inglese* 6 Matematica Discreta ( Elementi) MAT/02 6 Programmazione ( Elementi) INF/01 6 Programmazione (Complementi) INF/01 6

5

Algoritmi e Strutture Dati (elementi)

Crediti: 6 Docente: P. Bonizzoni, R. Leporati, C. Zandron Descrizione e Programma del corso Obiettivi: Progettazione e analisi dell’efficienza di algoritmi; utilizzo delle strutture datifondamentali. Durante il corso saranno affrontati i seguenti argomenti: - Nozioni fondamentali (algoritmo, problema, istanza); Pseudocodice e macchina RAM; Problema dell'ordinamento di un vettore (Algoritmo insertion sort) - Nozioni matematiche: Limiti asintotici inferiori e superiori; Il principio di induzione; Nozioni varie (base, tetto, sommatorie, approssimazioni, polinomi) - Analisi di algoritmi: Dimensione dei dati di un problema; Complessitàcomputazionale; Valutazione dei tempi di esecuzione - Ricorsione: Definizioni ricorsive di insiemi; Algoritmi ricorsivi; Induzione - Approccio Divide-et-Impera: Definizione; Algoritmo Merge-Sort - Tempo di esecuzione di algoritmi ricorsivi (equazioni di ricorrenza): Definizioni;Metodo Sostituzione; Metodo Iterativo e alberi di ricorsione; Metodo Principale - Ordinamento in loco: Algoritmo Quick-sort; Quick-sort Randomizzato - Algoritmo di ordinamento Heapsort: Grafi e Alberi (nozioni fondamentali); Nozione di Heap; Heapsort - Altri algoritmi di ordinamento: Selection sort; Bubble sort; Ordinamento in tempo lineare; Limite inferiore per ordinamenti basati su confronti; Counting sort; Concetto di stabilità; Radix sort - Tipi astratti di dati e strutture dati (Introduzione): La nozione di tipo astratto (ADT); Insiemi dinamici; Operazioni fondamentali su insiemi dinamici - Liste concatenate: Liste semplici e doppie; Liste circolari; Uso di sentinelle; Operazioni fondamentali; Gestione di liste mediante array multipli - Pile (stack): Inserimento (push), cancellazione (pop); Implementazioni - Code (queue): Inserimento, cancellazione, attraversamento; Implementazioni - Insiemi: Definizioni e operazioni fondamentali; Realizzazione tramite liste; Realizzazione tramite vettori caratteristici - Alberi: Nozione di grafo e proprietà; Alberi generici: definizione ricorsiva; Nozioni generali (nodo, figlio, antenato, discendente, altezza...); Implementazione (record con puntatori; varianti) - Alberi binari: Attraversamento (ordine anticipato, simmetrico, posticipato); Alberi binari di ricerca e operazioni fondamentali (inserimento, cancellazione, ricerca, max, min, successore, predecessore); Questioni di bilanciamento (Alberi AVL) - Tabelle di hash: Indirizzamento diretto; Funzioni di hash; Risoluzione di collisioni tramite liste concatenate e indirizzamento aperto; Scansione lineare; Scansione quadratica; Doppio hashing Altre informazioni Modalità di esame: Scritto + Orale + Esercitazione di Laboratorio Sito web del corso: http://www.bio.disco.unimib.it/~leporati/algoelementi.html

6

Analisi Matematica I (Elementi)

Crediti: 6 Docente: B. Bacchelli, G. Kuhn, M. Mauri Descrizione e Programma del corso Conoscenze: Concetti fondamentali del calcolo differenziale e integrale per funzioni reali di variabile reale: continuità, derivabilità, approssimazione polinomiale, integrale definito, problema di Cauchy per equazioni differenziali del primo ordine, a variabili separabili e lineari. Abilità: Saper utilizzare gli strumenti del calcolo differenziale e integrale: grafico di una funzione, approssimazione polinomiale, calcolo di integrali definiti e di soluzioni di alcune equazioni differenziali. Programma: - Funzioni. Dominio, immagine, periodicità, simmetrie, biunivocità, funzione inversa. Limiti di funzioni. Stime asintotiche. Grafici di funzioni elementari. - Funzioni continue. Teorema degli zeri, proprietà dei valori intermedi, esistenza di massimi e minimi. Derivate e regole di derivazione. - Teoremi del calcolo differenziale: Fermat, Rolle, Lagrange, De L'Hopital. - Studio del grafico di funzione. La formula di Taylor. Definizione di integrale secondo Riemann. Teorema della media. - Teorema fondamentale del calcolo integrale. Integrazione per parti e per sostituzione, integrazione di funzioni razionali. - Equazioni differenziali e problema di Cauchy. Equazioni a variabili separabili e lineari del primo ordine. Altre informazioni Testi consigliati: - R.Adams, Calcolo differenziale 1, Casa Editrice Ambrosiana - M.Bertsch, Istituzioni di Matematiche, Boringhieri - C.Pagani e S.Salsa, Matematica, Zanichelli - S.Salsa e A.Squellati, Esercizi di Matematica, calcolo infinitesimale e algebra lineare, Zanichelli - Saranno inoltre disponibili delle dispense ad uso degli studenti presso la copisteria di viale Sarca 200. Modalità di esame: L'esame consiste in una prova scritta e una orale. Durante il corso si terranno due prove scritte parziali, il superamento delle quali farà accedere direttamente alla prova orale. Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

7

Architettura degli elaboratori

Crediti: 6 Docente: F. Marchese, C. Raibulet, D. G. Sorrenti Descrizione e Programma del corso Conoscenze: Lo studente apprende nozioni introduttive sul funzionamento dei calcolatori e della catena programmativa, relativamente a linguaggi di programmazione basati sul paradigma procedurale. Prerequisiti: familiarità, al livello dei programmi delle scuole superiori, con le unità di misura elementari della fisica, concetto di segnale, segnale periodico, legge di Ohm, etc. Programma: - Rassegna del set di istruzioni della cpu di riferimento del corso (mips r2000/3000), istruzioni e formato, procedure, convenzioni di uso dei registri e dello stack - Catena programmativa, convenzioni di uso della memoria, allocazione e scope delle variabili. - Spim, il simulatore della cpu di riferimento del corso - Nozioni di logica booleana e rassegna (analisi) di alcuni circuiti notevoli. - Ciclo fondamentale di funzionamento della cpu, percorso dei dati e sua implementazione in versione a singolo ciclo di clock. - Tecniche di gestione dell'ingresso - uscita (controllo di programma, interruzione di programma, accesso diretto alla memoria). Aspetti architetturali per la gestione delle eccezioni e gestore delle eccezioni Altre informazioni Corso integrato con il corso Architettura delle reti (il codice del corso integrato è 136) Testo di riferimento David A. Patterson and John L. Hennessy, "Computer Organization and Design: The Hardware/Software Interface", 2nd ed., Morgan & Kaufmann, 1997, ISBN 1-55860-428-6. Di questo testo esiste una traduzione italiana, indicata qui di seguito; si consiglia comunque di studiare sulla versione inglese: David A. Patterson and John L. Hennessy, "Struttura, Organizzazione e Progetto dei Calcolatori", Jackson Libri, collana Università, ISBN 8825615175 Per ulteriori informazioni sul corso si consulti ilsito web: http://old.disco.unimib.it/architettura1

8

Architettura delle reti

Crediti: 6 Docente: R. Bisiani, M. Dominoni Descrizione e Programma del corso Obiettivo dell’insegnamento: Introdurre lo studente al funzionamento delle reti di calcolatori ed in particolare ad Internet; indirizzato a studenti senza alcuna nozione di elettronica. Abilità: capacità di configurare una LAN e di analizzare i pacchetti della rete. Programma: - Introduzione alle reti e ad Internet con cenni storici. In particolare si vedono sia gli aspetti fisici che teorici arrivando al modello a pila protocollare che sta alla base di Internet odierno. - Livello Applicativo. Si comincia ad analizzare la pila protocollare a partire dal livello che è più familiare agli studenti, quello applicativo. In particolare si analizzano i protocolli più comuni, come http, smtp, ftp, telnet, dns. Vengono analizzate le moderne tecniche di web-caching e di distribuzione dei contenuti con protocolli p2p. - Livello di Trasporto. Vengono esaminati in dettaglio i protocolli usati in Internet, UDP e TCP. Vengono introdotti modelli teorici per analizzare il protocollo di trasferimento affidabile, in particolare si analizzano i meccanismi di “Go-back-N” e di “Selective Repeat” - Livello di Rete. Viene analizzato il protocollo di rete di Internet sia nella attuale versione (IPv4) che nella versione futura (IPv6). Vengono introdotti i principi di routing e di multicast. - Livelli di connessione e fisico. Vengono analizzati i principali protocolli di connessione punto a punto e su mezzo condiviso, con particolare attenzione alle reti locali. Vengono analizzate le realizzazioni delle moderne reti locali strutturate. Vengono analizzati i protocolli radio – IEEE 802.11. - Applicazioni Multimediali di Rete. Vengono analizzate le applicazioni multimediali con particolare riferimento alla differenza rispetto alle applicazioni di rete classiche. Vengono analizzate le necessità delle applicazioni multimediali in relazione ai limiti attuali di Internet, in particolare con il servizio “best effort” tipico della rete odierna. Vengono introdotti i protocolli adatti alle trasmissioni multimediali quali rtsp, rtp e rtpc. Altre informazioni Per ulteriori informazioni sul corso si consulti ilsito web: http://old.disco.unimib.it/architettura1/

9

Basi di dati (elementi)

Crediti: 6 Docente: C. Batini, R. Schettini, F. Zanzotto Descrizione e Programma del corso Scopi, Conoscenze, Abilità: Il corso introduce i concetti fondamentali delle basi di dati, diventate ormai uno strumento indispensabile e rilevante nei sistemi informativi aziendali per la gestione, scambio, interrogazione, aggiornamento delle informazioni strutturate di interesse per i diversi processi aziendali. Vengono in particolare approfonditi i modelli per basi di dati, con particolare riferimento al modello relazionale, i linguaggi di interrogazione e le metodologie di progetto. Per fornire allo studente una opportunità di applicazione concreta, è proposta una intensa attività di laboratorio. Lo studente, al termine del corso acquisisce conoscenze e abilità al fine di progettare, realizzare e gestire una base di dati corretta e utile ai fini aziendali, insieme ai programmi applicativi, collocandola nel contesto più ampio dei sistemi informativi. Programma 1. Cosa è e a cosa serve una base di dati. 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. 2. Come si rappresenta una base di dati. Il modello relazionale. Modelli logici. Modello relazionale: relazioni e tabelle, schemi ed istanze, informazione incompleta e valori nulli, chiavi, vincoli di integrità. 3. Come si interroga una base di dati. 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. Integrazione di SQL nei linguaggi di programmazione. 4. Come si progetta una base di dati. Metodologie di progettazione. 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. La normalizzazione. Altre informazioni Per ulteriori informazioni sul corso si consulti ilsito web dei docenti (i nomi dei siti potranno essere soggetti a modifiche): - Prof. Batini old.disco.unimib.it/bdeBatini - Prof. Schettini http://old.disco.unimib.it/ivl/

10

Informatica Generale

Crediti: 6 Docente: F. De Paoli, L. Lavazza, M. Pezzè Descrizione e Programma del corso Conoscenze: Concetti di base per l’uso del calcolatore e, in particolare, struttura modulare e risorse dei sistemi di elaborazione, funzionamento delle reti di computer e strumenti di produttività e programmazione più diffusi. Programma : - Parte I: Il calcolatore come strumento di programmazione a. Uso di base per la programmazione: struttura del file system; editor; compilatori ed interpreti b. Verifica di un programma: errori statici e dinamici; test e debugging - Parte II: La struttura del calcolatore e l'aritmetica binaria a. La struttura modulare di un calcolatore e il concetto di astrazione: il livello dei dispositivi; struttura di un calcolatore; CPU, memoria, periferiche e bus b. La rappresentazione dell'informazione: rappresentazione binaria, ottale e esadecimale; rappresentazione in modulo e segno; rappresentazione in complemento a 2; rappresentazione in eccesso; rappresentazione in virgola mobile; lo standard IEEE 754; rappresentazione di informazione non numerica: caratteri, immagini, suono - Parte III: La struttura della rete a. La rete: reti e topologie; commutazione a circuito e a pacchetto; protocolli di comunicazione e astrazione; i livelli ISO OSI; Internet; i protocolli IP, TCP e UDP; il modello client/server; protocolli applicativi: Telnet, FTP, HTTP, SMTP; WWW e URL - Parte IV: Il calcolatore come strumento di servizio: Principali strumenti di produttività: foglio elettronico; base di dati Altre informazioni Per ulteriori informazioni rivolgersi direttamente ai docenti del corso.

11

Matematica Discreta (Elementi)

Crediti: 6 Docente: Dalla Volta, Rigoli, (altro docente) Descrizione e Programma del corso Prerequisiti: Conoscenze di matematica di base (Scuola Superiore) Abilità: Uso delle tecniche di logica in un ragionamento matematico; tecniche di dimostrazione; linguaggio degli insiemi; nozioni introduttive su relazioni, grafi e reticoli; insieme delle classi di resto modulo n; matrici e sistemi lineari Programma: 1. Elementi di logica delle proposizioni: Cenni di logica formale. Operazioni tra proposizioni: congiunzione, disgiunzione, o esclusivo, implicazione materiale, doppia implicazione, implicazione contronominale, proposizioni composte. Equivalenza di proposizioni: tautologie e contraddizioni, dimostrazioni dell'equivalenza di proposizioni. Quantificatori: quantificatore universale e quantificatore esistenziale; verità e falsità di proposizioni contenenti quantificatori, quantificatori multipli, negazione di un quantificatore. Tecniche di dimostrazione: deduzioni logiche fondamentali, dimostrazioni dirette e indirette, dimostrazioni per assurdo, dimostrazioni per induzione (prima e seconda forma). Esempi di deduzioni errate. 2. Insiemi: Come si denota un insieme, operazioni tra gli insiemi. Corrispondenze e applicazioni. Prodotto cartesiano, corrispondenze e relazioni. Applicazioni: iniettività, suriettività, biiettività. Applicazioni composte. Cardinalità di insiemi. Cenni di analisi combinatorica 3. Numeri naturali e numeri interi: Divisione tra numeri interi, divisori e multipli, numeri primi (teorema fondamentale dell'aritmetica), esistenza di infiniti primi. Massimo comun divisore e minimo comune multiplo, algoritmo euclideo per il calcolo del MCD, identità di Bezout. Principio di induzione: prima e seconda forma. 4. Insiemi e relazioni: Grafo di una relazione. Equivalenze e partizioni, insieme quoziente. Insieme delle classi di resto modulo n. Ordinamenti: massimo, minimo, elemento massimale, elemento minimale, maggiorante, minorante, estremo inferiore, estremo superiore. 5. Grafi e strutture algebriche: Reticoli, reticoli booleani. Cammini e circuiti euleriani, alberi e grafi piani. Insiemi dotati di una operazione: gruppi. Insiemi dotati di più operazioni: anelli, campi. Esempi. Altre informazioni Per ulteriori informazioni sul corso si consulti ilsito web: http://www.matapp.unimib.it/~marina/did/mdis03/

12

Programmazione (Elementi e Complementi)

Crediti: 6 + 6 Docente: F. Arcelli, F. Cardone, F. Tisato (elementi) F. Cardone, D. Micucci, L. Pomello (complementi) Descrizione e Programma del corso Prerequisiti: Concetti base di programmazione. Elementi di programmazione ad oggetti, elementi del linguaggio Java. Abilità: Alla fine del corso lo studente dovrà essere capace di progettare e sviluppare semplici programmi in Java. Programma: 1. Struttura logica di un elaboratore e codifica dell'informazione. Gerarchia dei linguaggi di programmazione, compilatori e interpreti. La Java Virtual Machine. Algoritmi e programmi, il paradigma ad oggetti. 2. Tipi di dati primitivi. Variabili, dichiarazioni e assegnamenti. Espressioni e valutazione. Type checking. Stringhe. Ingresso/uscita. 3. Strutture di controllo selettive e iterative. Esempi elementari di algoritmi. 4. Array di tipi primitivi 5. Metodi, definizione ed invocazione 6. Programmazione ad oggetti vs programmazione tradizionale. Information hiding e incapsulamento. Definizione di classe e creazione di oggetti/istanze. 7. Metodi con tipi di dati complessi: definizione e invocazione. Modificatore di visibilità sui metodi. 8. Precondizioni e postcondizioni per i metodi. Attributi privati alla classe e metodi di accesso. Costruttori. Overloading di metodi e di costruttori. 9. Array di reference. 10. Ereditarietà singola e multipla. La classe Object. Visibilità per attributi e metodi. 11. Costruttori. 12. Le classi astratte e i metodi astratti. Polimorfismo e override di metodi. 13. Interfacce. Metodi di classe. Attributi di classe. 14. Lo sviluppo di semplici progetti. Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://www.sal.disco.unimib.it/programmazione/

13

Insegnamenti del Corso di Laurea di Primo Livello in Informatica

A.A. 2004/2005 II anno

Insegnamento- S. S. D. - CFU

Algoritmi e Strutture Dati (Complementi) INF/01 6 Analisi Matematica 1 (Complementi) MAT/05 6 Fisica Generale 1 ( Elementi) FIS/01 6 Laboratorio di Algoritmi e Strutture Dati (*) INF/01 6 Laboratorio di Ricerca Operativa, Probabilità e Statistica (*) MAT/09 6 Laboratorio di Sistemi e Reti (*) ING-INF/05 6 Laboratorio di Sistemi Operativi (Linux) (*) ING-INF/05 6 Laboratorio di Sistemi Operativi (Windows) (*) ING-INF/05 6 Linguaggi di Programmazione (Elementi) INF/01 6 Matematica Discreta (Complementi) MAT/02 6 Ricerca Operativa, Probabilità e Statistica ( Elementi) MAT/09 6 Ricerca Operativa, Probabilità e Statistica (Complementi) MAT/09 6 Sistemi Operativi ( Elementi) ING-INF/05 6 Sistemi Operativi (Complementi) INF/01 6

(*) Fra il 1 ottobre e il 30 novembre del II anno, all’atto della presentazione del piano di studio, lo studente deve scegliere uno fra i cinque insegnamenti di Laboratorio.

14

Algoritmi e Strutture di Dati (Complementi)

Crediti: 6 Docente: P. Bonizzoni, G. Mauri Descrizione e Programma del corso Conoscenze: Tecniche algoritmiche avanzate Abilità: Progetto e analisi di algoritmi con tecniche di programmazione dinamica o greedy, in particolare algoritmi su grafi Programma: 1. Programmazione dinamica - Esempi introduttivi - Caratteristiche principali - Implementazione con matrici 2. Algoritmi greedy - Esempi introduttivi - Matroidi - Il teorema di Rado 3. Algoritmi su grafi - Rappresentazione in memoria di un grafo. - Visita in ampiezza e in profondità di un grafo. - Ricerca delle componenti connesse di un grafo non orientato. - Ricerca delle componenti (fortemente) connesse in un grafo orientato - Ricerca di alberi di copertura minimi di un grafo. - Ricerca di cammini minimi Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://www.bio.disco.unimib.it/~leporati/algocomplementi.html

15

Analisi Matematica I (Complementi)

Crediti: 6 Docente: G. Kuhn, Fontana Descrizione e Programma del corso Prerequisiti: Analisi Matematica I (Elementi). Conoscenze: Il corso si propone di fornire strumenti di calcolo differenziale e integrale più avanzati, nonché elementari nozioni di geometria nello spazio e di calcolo vettoriale. Abilità: Calcolo di integrali multipli, riconoscimento di massimi e minimi per funzioni di più variabili, sviluppi in serie di Taylor e cambiamento di variabili nel piano e nello spazio. Programma: - Serie numeriche. Serie di potenze e serie di Taylor. - Elementari nozioni di geometria nello spazio (rette, piani, parallelismo perpendicolarità, prodotto scalare e vettoriale) - Calcolo differenziale per funzioni di più variabili : riconoscimento di massimi e minimi liberi. - Calcolo integrale per funzioni continue di più variabili. - Cambiamento di coordinate nel piano e nello spazio e relativi teoremi sugli integrali multipli. Altre informazioni Testi consigliati: - R. Adams, Calcolo differenziale 1, Casa Editrice Ambrosiana - R. Adams, Calcolo differenziale 2, Casa Editrice Ambrosiana - S. Salsa e A. Squellati, Esercizi di Analisi Matematica II Editrice Masson Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

16

Fisica Generale 1 (Elementi)

Crediti: 6 Docente: M. Enriotti, S. Pensotti Descrizione e Programma del corso Conoscenze: Principi fondamentali della meccanica newtoniana,conoscenze di base sui sistemi fluidi, elementi di termologia, primo e secondo principio della termodinamica, equazioni di Maxwell nel vuoto. Abilità: : nella prova di esame si richiede allo studente la soluzione di semplici problemi concettuali e/o numerici sugli argomenti trattati nel corso. Programma: 1. Elementi di meccanica newtoniana del punto materiale 2. Nozioni elementari di statica e dinamica dei fluidi ideali 3. Elementi di termologia (termometria,calorimetria,gas ideali) 4. Primo e secondo principio della termodinamica di equilibrio per sistemi chiusi 5 Proprietà del campo elettrostatico nel vuoto. La corrente elettrica stazionaria. Principi della magnetostatica nel vuoto. 6. L'induzione elettromagnetica e la corrente di spostamento. Le equazioni di Maxwell nel vuoto. Altre informazioni Testi consigliati: D. Halliday, R. Resnick, J. Walker "Fondamenti di Fisica" - 5 Ed. (C.E.A.). Alla fine del corso i docenti in Aula hanno distribuito l'elenco dei capitoli e paragrafi svolti. Modalità di esame: Prova scritta Per ulteriori informazioni sul corso si consulti il sito web: http://pcams01.mib.infn.it/informatica/Pensotti.html

17

Laboratorio di algoritmi e strutture dati

Crediti: 6 Docente: L. Bernardinello Descrizione e Programma del corso Il corso, a partire dalle conoscenze acquisite nei moduli “Elementi” e “Complementi” di algoritmi e strutture dati, si concentra sugli aspetti e sui problemi specifici della realizzazione di algoritmi e di strutture dati nella pratica, servendosi del C come linguaggio di programmazione. Un'attenzione particolare è dedicata allo sviluppo di componenti software generiche e riutilizzabili. Il corso si articola in 24 ore di lezione in aula, 12 ore di esercitazione in aula e 24 ore di esercitazione in laboratorio. Prerequisiti: Non si richiede nessuna conoscenza del C, ma si assume che lo studente abbia seguito o stia seguendo i corsi di programmazione e di algoritmi e strutture dati del primo e secondo anno. Programma: 1. Fondamenti del linguaggio C 2. Tipi di dati astratti e realizzazione di strutture dati in C 3. Uso di librerie di funzioni 4. Disegno e realizzazione di una libreria di funzioni in C 5. Realizzazione di algoritmi classici per problemi di ordinamento, di trattamento di stringhe, algoritmi su alberi e grafi, tabelle di hashing. Altre informazioni Libro di testo: Robert Sedgewick, Algoritmi in C, terza edizione, Addison-Wesley. Testi consigliati 1. Kernighan, B. W., Ritchie D. M., Il linguaggio C, seconda edizione, Pearson Prentice-Hall, 2004. 2. Sedgewick, R., Algorithms in C, Part 5, third edition, Addison-Wesley, 2001. 3. Kernighan, B. W., Pike R., The Practice of Programming, Addison-Wesley, 1999. Modalità di esame: L'esame consiste nel disegno di un algoritmo e nella sua realizzazione in C. Di norma, il tempo concesso per lo svolgimento è di 7-10 giorni. La soluzione viene discussa in un colloquio (queste regole potrebbero variare in futuro). Per ulteriori informazioni sul corso si consulti il sito web: http://www.mcd.disco.unimib.it/asdl/

18

Laboratorio di Ricerca Operativa, Probabilità e Statistica

Crediti: 6 Docente: F. Stella Descrizione e Programma del corso Conoscenze: Conoscenze di base per la trattazione (misurazione, controllo e gestione)del rischio finanziario nelle sue diverse forme con particolare riferimento al “Market Risk”. Inoltre, lo studente acquisirà conoscenze di base circa le principali metodologie computazionali e tecnologie informatiche per la progettazione e l’implementazione di sistemi software di: “Risk Management”, “Trading On-Line” e “Financial Web e Text Mining”. Abilità: Lo studente acquisirà competenze professionalizzanti nell’ambito delle tecnologie e delle metodologie della “Finanza Computazionale”. In particolare, lo studente sarà in grado di svolgere un ruolo guida nell’ambito di un gruppo di lavoro che operi in realtà finanziarie quali; Banche, SIM e società di software integration per istituti di credito o investitori privati. Lo studente sarà in grado di progettare e implementare metodi, modelli ed architetture software secondo il paradigma di programmazione orientato agli oggetti che operino anche in ambito WEB. Programma: 1. Ritorno, Rischio e Mercati Finanziari: Introduzione; Tipologie di rischio; Disastri finanziari 2. Azioni e Strumenti Finanziari e Fattori di Rischio: Stocks; Bonds; Forward e Futures; Options; Tassi di interesse; Volatilità 3. Algoritmi di Pricing e Value at Risk: Bond; Futures; Options 4. On-line Trading e Portfolio Investment: Introduzione; Log-ottimalità; Strategie a proporzione costante; Algoritmi di trading on-line 5. Web e Text Mining per Previsioni Finanziarie: Fonti dati; Preprocessing e Reti Neurali; Previsioni Sell-Buy; Precision e Recall 6. Reti Neurali per il Rischio di Credito: Reti Neurali; Stima del Default; Credit Scoring Altre informazioni Testi consigliati: “Option, futures and other derivatives”, Hull J.C., Prentice-Hall PTR, (2000) e lucidi del docente. Modalità di esame: Prova scritta e prova orale oppure in subordine progetto software e prova orale. Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

19

Laboratorio di Sistemi e Reti

Crediti: 6 Docente: R. Polillo Descrizione e Programma del corso Conoscenze: Le problematiche generali dell’analisi e della progettazione di un’applicazione orientata alla comunicazione Abilità: Capacità di analizzare e progettare un’applicazione software orientata alla comunicazione Programma: Il corso si propone di trasmettere agli studenti la capacità di analizzare e progettare una semplice applicazione informatica orientata alla comunicazione. Il corso è strutturato in forma di laboratorio: dopo un breve ciclo di lezioni introduttive volto a fornire le basi metodologiche del lavoro, gli studenti, organizzati in gruppi di lavoro, definiranno autonomamente i requisiti di un’applicazione informatica, ne analizzeranno la fattibilità dal punto di vista tecnologico, e ne realizzeranno un prototipo utilizzando semplici strumenti di prototipazione. Le applicazioni considerate verranno scelte dagli studenti nell’area delle applicazioni Internet, della telefonia di nuova generazione e, in generale, delle applicazioni delle tecnologie di comunicazione wireless. Nel corso del laboratorio verrà data particolare enfasi agli aspetti di impostazione metodologica del progetto, all’analisi dei requisiti di prodotto e della sua fattibilità, e al design dell’interfaccia utente. Altre informazioni Esame: L’esame consisterà nella presentazione del prototipo realizzato; ciascuno studente verrà valutato sulla base dello specifico contributo individuale fornito al gruppo di progetto. Testi consigliati: - lucidi dalle lezioni introduttive - altri testi in relazione ai particolari progetti scelti Sito web del corso: http://www.rpolillo.it/labsistreti/index.htm Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

20

Laboratorio di Sistemi Operativi (Linux)

Crediti: 6 Docente: H. Le Van Descrizione e Programma del corso Conoscenze: Il corso intende fornire agli studenti le seguenti conoscenze: Architettura e system call dei sistemi operativi Unix e Linux, Programmazione per la gestione e la comunicazione fra i processi, Principali comandi di configurazione e di manutenzione di sistemi Linux, Principi di programmazione di software di rete con le socket. Abilità: Costruire programmi di sistema in ambiente Linux (con uso delle principali system call, in C). Costruire applicazioni di rete con uso di socket. Usare principali comandi per manutenere un sistema Linux. Programma 1. Architettura interna di Unix e Linux 2. Primitive per la gestione dei file e directories 3. Primitive per la gestione dei processi 4. Primitive per la comunicazione fra i processi (pipe, segnali) 5. Software di rete e socket 6. Cenni a comandi di amministrazione del sistema Linux Altre informazioni Nota: il corso comprende le esercitazioni di Laboratorio assistite. La frequenza del Laboratorio è obbligatoria. Per ulteriori informazioni sul corso si consulti il sito web: http://linux.disco.unimib.it/~levan/labsistemi/

21

Laboratorio di Sistemi Operativi (Windows) Crediti: 6 Docente: R. Bisiani Descrizione e Programma del corso L’obiettivo di questo corso è di estendere la conoscenza dei sistemi operativi programmando delle applicazioni che fanno un uso esteso delle funzionalità di un sistema operativo. La versione Windows di questo corso sarà orientata sulle funzionalità di Windows XP e dell’ambiente di programmazione .NET. Non occorrono conoscenze specifiche di questi ambienti come prerequisito al corso. Il corso è nuovo e non è ancora possibile dare i dettagli del programma e dell’organizzazione del corso stesso. Si tratterà comunque di un corso con attività frontale e di studio minima, e massima attività di laboratorio e programmazione. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

22

Linguaggi di Programmazione (elementi)

Crediti: 6 Docente: G. Pasi, C. Simone Descrizione e Programma del corso Conoscenze: Completare le conoscenze acquisite nei corsi di Programmazione e di Architetture degli Elaboratori con concetti di base per una migliore comprensione delle caratteristiche ed un migliore uso dei linguaggi di programmazione che appartengono ai diversi paradigmi esistenti. Abilità: Generazione e riconoscimento di linguaggi regolari e liberi da contesto. Elementi essenziali della programmazione in Lisp e Prolog. Definizione di specifiche di programmi concorrenti Programma: 1. Paradigmi di programmazione: imperativa, funzionale, logica - Grammatiche regolari e libere da contesto - Sintassi, semantica: traduttori ed interpreti 2. Elementi di base della programmazione concorrente: definizione delle specifiche di un programma. 3. Elementi di base della programmazione in Lisp 4. Elementi di base della programmazione in Prolog Altre informazioni Testi di riferimento - Carlo Ghezzi, Mehdi Jazayeri, Programming Language Concepts, John Wiley and Sons 1998, terza edizione (per il Moldulo 1: cap. 1, §2.1; per il modulo 4: cap. 7; per il Modulo 5: cap. 8) - J. Magee & J. Kramer, “Concurrency: State Models and Java Programs”, Wiley, 1999 ISBN 0-471-98710-7 (per il Modulo 3) - P. Graham, ANSI Common Lisp, Prentice-Hall, ISBN 0133708756 (per il Modulo 4) - L. Sterling, E. Shapiro, The Art of Prolog, MIT Press, ISBN: 0262193388; 2nd edition (per il Modulo 5) - Il materiale didattico usato durante le lezioni è reperibile in: old.disco.unimib.it/simone/ldp_el/index.htm Modalità d’esame: prova scritta seguita da un orale, previa presentazione e discussione di un progetto assegnato di programmazione in Lisp e in Prolog. Per ulteriori informazioni sul corso rivolgersi direttamente i docenti.

23

Matematica Discreta (Complementi) Crediti: 6 Docente: L. De Michele, Previtali Descrizione e Programma del corso Programma: 1. Numeri Complessi: Numeri complessi, parte reale e parte immaginaria, forma cartesiana, forma polare, modulo, argomento, l’esponenziale complesso, elevamento a potenza, formula di De Moivre, estrazione di radice. 2. Matrici: Definizione di matrici, somma, prodotto per scalari, prodotto righe per colonne, traccia, sottomatrici, matrici triangolari, diagonali, trasposizione, matrici simmetriche, permutazioni e segno, determinante, minori complementari, complemento algebrico, Teorema di Laplace, Teorema di Binet, condizioni di non singolarita' per una matrice, matrice inversa e suo calcolo, determinante e volumi, proprietà del determinante, matrici ortogonali, vettori ortonormali, 3. Spazi vettoriali: Definizione, struttura algebrica, esempi: polinomi e prodotti cartesiani di campi, matrici rettangolari, lo spazio canonico, sottospazi, intersezione e somma, somma diretta, Formula di Grassmann, combinazioni lineari, caratterizzazione dei sottospazi, chiusura lineare, sistemi di generatori, matrici elementari, vettori standard, spazio dele righe e/o delle colonne, indipendenza lineare, criteri per la dipendenza lineare, basi, caratterizzazione delle basi, esempi, dimensione, rango di una matrice: varie definizioni, calcolo del rango, Teorema di Kronecker, matrici orlate. 4. Sistemi lineari: Definizione ed esempi, sistemi omogenei, traduzione matriciale, Teorema di Rouché-Capelli, metodi risolutivi, regola di Cramer, spazio delle soluzioni di un sistema e del sistema omogeneo associato. 5. Applicazioni lineari: Definizione, nucleo, immagine e loro proprietà, Teorema nullità + rango, esistenza ed unicità di applicazioni lineari, estensione lineare, iniettività, matrici associate, cambiamenti di base. 6. Similitudine e diagonalizzabilità: Definizione, relazioni di equivalenza, diagonalizzabilità, invarianti di classi di similitudine, polinomio caratteristico,interpretazione di alcuni dei suoi coefficienti, autovalori e autovettori, estensione del campo, autospazi, indipendenza tra autovettori, molteplicità algebrica e geometrica, spettro, regolarità di autovalori, criteri di diagonalizzabilità, Teorema di Cayley-Hamilton. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

24

Ricerca Operativa Probabilità e Statistica (elementi)

Crediti: 6 Docente: E. Messina, G. Lulli Descrizione e Programma del corso Conoscenze: - Strumenti per la formulazione e la soluzione di problemi decisionali attraverso modelli di programmazione matematica (lineare, intera, non lineare) e modelli basati su grafi , alberi di decisione e Catene di Markov. - Strumenti software per la soluzione e l’analisi dei risultati ottenuti. Abilità: - Lo studente acquisirà abilità nel formulare problemi decisionali, nello scegliere opportunamente le tecniche risolutive utilizzando i metodi della programmazione matematica e della teoria delle decisioni e nell’analizzare criticamente i risultati ottenuti. - Acquisirà anche competenze nell’utilizzo di software specializzato per la soluzione di tali problemi. Programma - Programmazione Lineare - Programmazione Non Lineare - Programmazione Lineare Intera - Reti di Flusso e Distribuzione - Metodi per la Gestione di Progetti (Tecniche PERT-CPM) - Analisi Decisionale Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: www.life.disco.unimib.it

25

Ricerca Operativa e Probabilità e Statistica (Complementi)

Crediti: 6 Docente: E. Fagiuoli Descrizione e Programma del corso Conoscenze: Approfondimenti di Statistica e Calcolo delle Probabilità. Lo studente approfondirà le proprie conoscenze sui metodi di statistica descrittiva e sui principali modelli di computazione probabilistica, sulle metodologie di stima dei parametri, sui principali test di ipotesi (parametrici) ed infine sulla modellazione mediante regressione lineare uni – e multivariata. Abilità: Lo studente acquisirà competenze specifiche che lo porranno in grado di affrontare e risolvere, in termini operativi, problemi quali l’analisi descrittiva dei dati. Inoltre, lo studente acquisirà abilità per condurre analisi inferenziali atte a prevedere quantità di interesse. Programma: 1. Statistica Descrittiva: Rappresentazioni numeriche; rappresentazioni grafiche; Indici di tendenza centrale; indici di variabilità; Rappresentazioni per caratteri bidimensionali; Regressione singola; regressione multivariata 2. Calcolo delle Probabilità: Definizioni; probabilità condizionata e indipendenza stocastica; Variabili aleatorie unidimensionali; variabili aleatorie multidimensionali; Indici di tendenza centrale; iIndici di variabilità 3. Distribuzioni Notevoli: Principali distribuzioni discrete; principali distribuzioni continue 4. Teoremi di Convergenza: Legge dei grandi numeri; Teorema limite centrale 5. Stima di Parametri: Principali distribuzioni campionarie; stimatori e stime puntuali; Stime intervallari: intervalli di confidenza per la media e per la varianza 6. Verifica di Ipotesi: Test Parametrici: Test sulla media di una popolazione; Test sulla varianza di una popolazione; Test sulla differenza delle medie; Test sulla differenza delle varianza; Test di incorrelazione 7. Regressione Lineare: Stima dei parametri della regressione mediante minimi quadrati; Intervalli di confidenza sui parametri della regressione; Intervalli di confidenza per individui; Attendibilità di un modello lineare; Analisi dei residui; Regressione lineare multipla: stima dei parametri, attendibilità; multicollinearità Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://www.cnds.disco.unimib.it/

26

Sistemi Operativi e Reti (Elementi e Complementi)

Crediti: 6 + 6 Docente: C. Ferretti, F. Tisato (elementi) L. Bernardinello, F. De Paoli (complementi) Descrizione e Programma del corso Obiettivi dell’insegnamento: Un sistema operativo è l'insieme di elementi software che si prendono cura della gestione efficiente e sicura di hardware e altre risorse in un elaboratore, e con cui le applicazioni finali d'utente comunicano per ottenere servizi che vanno dall'uso del processore stesso alla comunicazione via rete. Il corso presenta alcune soluzioni, e relative implementazioni, per questi problemi. Vengono inoltre sviluppate abilità pratiche nella realizzazione di algoritmi concorrenti e nell'implementazione di piccole applicazioni su rete. Programmi: Sistemi Operativi e Reti (Elementi): 1. Scheduling dei processi; comunicazione fra processi 2. Shell di Unix 3. Gestione della memoria 4. Gestione del file system 5. Modelli di programmazione ad eventi e algoritmici 6. Concetti e strumenti per la programmazione ad eventi in Java (GUI e eccezioni) Sistemi Operativi e Reti (Complementi): 1. Modellazione di sistemi concorrenti con automi a stati finiti; 2. Multithreading e gestione della sincronizzazione 3. Realizzazione di programmi concorrenti in Java: threads e monitors 4. Reti: approfondimenti sul routing, esercizi e verifiche 5. Le socket: implementazione di piccoli sistemi client-server TCP 6. Problemi di sicurezza nei sistemi operativi e nelle reti Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://linux.disco.unimib.it/~levan/sistemi/

27

Insegnamenti del Corso di Laurea di Primo Livello in Informatica

A.A. 2004/2005 III anno

Insegnamento S. S. D. CFU Analisi dei Sistemi Finanziari MAT/09 6 Analisi Matematica 2 MAT/05 6 Aspetti Epistemologici dell’Informatica INF/01 6 Basi di Dati (Complementi) INF/01 6 Bioinformatica INF/01 6 Business Intelligence MAT/09 6 Calcolo Numerico MAT/08 6 Cibernetica (Elementi di Teoria dei Sistemi) INF/01 6 Computazione Quantistica (Metodi Matematici ed Elementi) INF/01 6 Data Minino MAT/09 6 Economia e Organizzazione Aziendale ING/IND/35 6 Elaborazione delle Immagini (elementi) INF/01 6 Elaborazione Numerica dei Segnali INF/01 6 Fisica Generale 1 (Complementi) FIS/01 6 Fisica Generale 2 (Progettazione Logica Digitale) FIS/01 6 Fondamenti Logico-Matematici dell'Informatica (Elementi) INF/01 6 Gestione di documenti in ambiente WEB INF/01 6 Informatica Applicata (Controlli Automatici) INF/01 6 Informatica Applicata (Grafica) (*) INF/01 6 Informatica Medica INF/01 6 Informatica Teorica ( Elementi) INF/01 6 Ingegneria del Software (Processo e Qualità) ING-INF/05 6 Ingegneria del Software (Progettazione Object Oriented) ING-INF/05 6 Intelligenza Artificiale (Elementi) INF/01 6 Interazione Uomo-Macchina INF/01 6 Linguaggi e Traduttori INF/01 6 Linguaggi per il coordinamento e la cooperazione INF/01 6 Linguistica Generale (*) L-LING/01 6 Metodi Computazionali per la Biologia INF/01 6 Metodi Formali dell'Informatica INF/01 6 Psicologia Generale 1 (*) M-PSI/01 6 Realtà Virtuale INF/01 6 Robotica (Elementi) ING-INF/05 6 Sistemi di Supporto alla Cooperazione INF/01 6 Sistemi Distribuiti INF/01 6 Tecnologie Informatiche per la Comunicazione ING-INF/05 6 Teoria dell'Informazione (Codici e crittografia) INF/01 6 (*) Insegnamenti mutuati dal Corso di Laurea in Scienze della Comunicazione (indirizzo Psicologia della Comunicazione)

28

Analisi dei sistemi finanziari

Crediti: 6 Docente: F. Archetti Descrizione e Programma del corso Obiettivi dell’insegnamento: Il corso intende introdurre i principi fondamentali di funzionamento degli strumenti e dei mercati finanziari e delle procedure di valutazione e gestione dei rischi di mercato. Programma: - Metodologie avanzate di gestione e trattamento dei dati finanziari. - Mercati telematici, le contrattazioni a distanza. - Descrizione e funzionamento dei principali strumenti finanziari e caratteristiche di utilizzo. - Strumenti a reddito fisso: la struttura a termine dei tassi di interesse. - Strumenti derivati: forwards, futures, swaps, opzioni Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

29

Analisi Matematica 2 Crediti: 6 Docente: S. Levi Descrizione e Programma del corso Il corso intende presentare i principali argomenti dell' analisi integro-differenziale in più variabili, oltre ad un' introduzione alla teoria delle equazioni differenziali ordinarie ed alle successioni e serie di funzioni di una variabile. Programma: 2. Lo spazio reale n-dimensionale; limiti e continuità in più variabili; derivate parziali; differenziabilità; formula di Taylor; massimi e minimi relativi. 3. Funzioni implicite; teorema del Dini; massimi e minimi vincolati; moltiplicatori di Lagrange. 4. Integrali doppi e tripli. 5. Equazioni differenziali ordinarie; equazioni lineari del primo e secondo ordine; il teorema di Cauchy. 6. Successioni di funzioni; convergenza puntuale e uniforme; serie di funzioni e serie di potenze. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente ([email protected]).

30

Aspetti epistemologici dell’informatica

Crediti: 6 Docente: S. Bandini Descrizione e Programma del corso Attraverso una panoramica dei protagonisti che ne hanno di fatto scritto la storia, scopo del corso è quello di presentare lo sviluppo delle idee dell’informatica con uno sguardo sensibile alle origini concettuali profonde che ne hanno motivato la scansione temporale. A partire dalla genesi in ambito logico-matematico dell'idea di calcolo automatico, verranno prese in considerazione le più rilevanti svolte concettuali che hanno portato, verso la metà del secolo scorso, alla definizione delle strutture computazionali dei calcolatori. Al fine di valutare il valore e le ricadute indotte dalla irruzione di tali macchine nell’ampio e variegato contesto dei dibattiti filosofici sulla natura e la definizione della conoscenza scientifica, verranno quindi introdotte le linee di fondo di un approccio epistemologico che condurrà ad illustrare gli elementi caratterizzanti dell’Intelligenza Artificiale. Programma del corso 2. Storia dell’Informatica Le origini: genesi dell'idea di calcolo e computazione da Leibniz a Turing. La nascita dei Modelli computazionali e delle Macchine per il calcolo (Il modello di Turing: dalle macchine calcolatrici alle macchine intelligenti. L’architettura di Von Neumann. Il Software ed il concetto di programmazione) 3. Il ruolo dei modelli nella scienza Scienza e conoscenza: Introduzione all’epistemolgia ed alla filosofia della scienza. L’idea moderna di scienza: il metodo Ipotetico-Deduttivo. Il dibattito epistemologico sui modelli concettuali e sul progresso scientifico 4. Modelli computazionali e modelli concettuali nell’ambito dell’Informatica Il modello di Conoscenza scientifica nell’ambito della Scienza dell’Informazione. Il paradigma classico ed il paradigma dell’Intelligenza Artificiale (AI). Intelligenza Artificiale: i protagonisti, lo sviluppo, gli approcci e le definizioni. La nozione di modello concettuale in Rappresentazione della conoscenza: Conoscenza Procedurale e Conoscenza Dichiarativa. Elementi architetturali: l’eseguibilità di un modello concettuale. Scienza sperimentale e computazione: uno sguardo sulla pervasività tecnologica. Altre informazioni Per ulteriori informazioni sul corso (e per il materiale) si consulti la sezione didattica del sito web: www.labic.disco.unimib.it

31

Basi di dati (complementi) Crediti: 6 Docente: C. Batini, A. Campi Descrizione e Programma del corso Il sistema di gestione di una base di dati è diventato uno strumento sempre più complesso, dovendo utilizzare strategie per la efficiente e corretta esecuzione concorrente di transazioni e interrogazioni, reagire ai guasti, gestire tipologie di dati, documenti, grafici, immagini, suoni, sia operativi che per il supporto decisionale, aggiornati, scambiati e interrogati in sistemi centralizzati o distribuiti, omogenei o, sempre più spesso, eterogenei. Diventa importante perciò conoscere le strategie, i servizi, la infrastruttura complessiva di un sistema di gestione di basi di dati, per poter utilizzare al meglio le basi di dati come tecnologia rilevante di una organizzazione, applicando anche tali conoscenze in progetti di sviluppo. Programma 3. Tecnologie per sistemi di gestione di basi di dati: principali proprietà e relative funzionalità Proprietà di atomicità, consistenza, isolamento, persistenza. Controllo di concorrenza, gestione del buffer, gestione della affidabilità, strutture di dati su memoria secondaria, metodi di accesso, ottimizzazione delle interrogazioni. 4. Progettare un Data Warehouse. Progettare una base dati su web. Conoscere gli aspetti rilevanti del controllo degli accessi. 5. Modelli e tecnologie per basi di dati distribuite Distribuzione, eterogeneità, autonomia nelle basi di dati distribuite. Struttura di una base di dati distribuita, criteri di classificazione, tipologie di basi di dati distribuite, principali funzionalità per controllo di concorrenza, gestione della affidabilità, ottimizzazione delle interrogazioni. 6. Data Warehouse Basi di dati per sistemi operativi e per sistemi di supporto alle decisioni. Data Warehouse come base di dati integrata per supporto alle decisioni. Struttura di un data warehouse. Modelli e metodologie di progettazione. Cenni alla integrazione e alla qualità dei dati 7. Sicurezza e controllo dell’accesso nelle basi di dati. Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web (il nome verrà probabilmente aggiornato, rivolgersi al docente): http://old.disco.unimib.it/DBCompl2003/

32

Bioinformatica Crediti: 6 Docente: P. Bonizzoni Descrizione e Programma del corso Conoscenze: il corso si propone di introdurre lo studente ad un recente settore di applicazione dell'Informatica 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 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 Internet per lo studio delle sequenze biologiche. 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. Lo splicing alternativo e la predizione della struttura esoni/introni delle sequenze genomiche. 7. Alberi evoluzionari. Ricostruzione della storia evolutiva di specie con alberi evoluzionari: metodi principali. 8. Riarrangiamento genomico. La ricostruire dell'evoluzione genomica tramite lo studio di problemi combinatori di ordinamento. Ordinamento per inversione e trasposizione: algoritmi e complessità. 9. Il linguaggio di programmazione Perl ed utilizzo nell’analisi di biosequenze. 10. Le banche dati e i principali programmi per il confronto sequenze e la ricostruzione di alberi evoluzionari (FAST, BLAST, PHYLIP). Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://bioinformatics.bio.disco.unimib.it/~bonizzoni/corso_bioinformatica.html

33

Business Intelligence Crediti: 6 Docente: F. Stella Descrizione e Programma del corso Conoscenze: Lo studente apprenderà modelli computazionali ed architetture software impiegate nell’ambito della Business Intelligence. In particolare, verranno affrontate problematiche di Business Intelligence quali a titolo esemplificativo: Customer profiling e segmentazione, Analisi comportamentale dei navigatori WEB, Rilevazione di frodi e spawming, Crawling e analisi strutturale del WEB e Commercio elettronico in senso generale. Il corso è organizzato in modo tale da fornire una concettualizzazione architetturale, una formulazione in termini algoritmico-computazionali per giungere fino al corrispondente deployement 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 e Commercio elettronico, ed in termini operativi, di progettare ed implementare sistemi software per la gestione delle relazioni con i clienti on-line, l’analisi dati di aziende che operano sul WEB, e la risoluzione di problemi di decisione in condizioni di incertezza. Programma: 1. Business Intelligence: Introduzione; Motivazioni; Applicazioni (Customer profiling e segmentazione; Analisi comportamentale dei navigatori WEB; Rilevazione di frodi e spawming; Crawling e analisi strutturale del WEB; Commercio elettronico) 2. Tecnologie WEB: Documenti; Protocolli di comunicazione; Log files; Motori di ricerca 3. Classificazione: Supervisionata e non supervisionata; Modello concettuale; Teoria Bayesiana 4. Misure di performance-Text Mining and Analysis: Importazione e parsine; Preprocessing; Features selection e construction 5. Modelli Computazionale: Feedforward Neural Networks; Bayesian Conficende Propagation Neural Networks; Support Vector Machines 6. Progettazione di Applicazioni Software: Modellazione concettuale; Componenti software e risorse WEB; Testing e Deployment 7. Casi di Studio: Personal Mail Assistant e call center management; Customer profiling e segmentazione; Rilevazione di frodi e spawming; Crawling e analisi strutturale del WEB; Analisi comportamentale dei navigatori WEB Altre informazioni Testi consigliati: Slide del docente Modalità di esame: Progetto software e discussione orale Per ulteriori informazioni rivolgersi direttamente al docente ([email protected]).

34

Calcolo Numerico

Crediti: 6 Docente: A. Russo Descrizione e Programma del corso Prerequisiti: Matematica di base Abilità: Familiarità con i ragionamenti di tipo matematico Programma: - Aritmetica floating point - Algebra lineare numerica - Metodo CORDIC per il calcolo delle funzioni elementari - Esempi di algoritmi adattivi Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

35

Cibernetica (Elementi di Teoria dei Sistemi) Crediti: 6 Docente: G. Cattaneo, A. Dennunzio Descrizione e Programma del corso 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”. Programma: - 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 duo-dimensionali; località e uniformità della regola di aggiornamento. Teoria delle Reti Neurali: matrici dei pesi, vettori delle soglie e funzione di attivazione.. Singolo neurone come riconoscitore. - Sistemi Dinamici a Tempi Discreti (SDTD): spazio degli stati e funzione stato prossimo. Punti fissi e ciclici della evoluzione dinamica. Stabilità, Attrattività e Repulsività dei punti di equilibrio. Coniugazione tra SDTD e isomorfismo del comportamento dinamico. - Sistemi uno-dimensionali: lineari, affini e generali (differenziabili). Applicazioni alla finanza, alle scienze sociali e alla genetica. Dinamica a tempi discreti della crescita delle popolazioni: dal modello di Malthus (ambiente con risorse infinite) alla mappa logistica (modello a risorse finite). - Sistemi dinamici bidimensionali: lineari e affini. Coniugazione lineare di un generico SD bidimensionale colle tre forme canoniche: autovalori, autovettori e condizioni circa l’attrattività del vettore nullo rispetto al raggio spettrale. Linearizzazione del caso non lineare: dinamiche di due specie in competizione nello stesso ambiente a risorse finite. - Mappe contratte come SDI con unico punto di equilibrio attrattore asintotico globale (Teorema di Banach del punto fisso). Stime a priori e a posteriori delle approssimazioni iterate. Applicazione al metodo di Newton. Contrazioni affini: metodi di Jacobi e di Gauss-Seidel per risolvere sistemi lineari. Catene di Markoff a tempi discreti e condizione di contrattività. - Teoria delle Equazioni alle differenze (ED) di ordine due e ricorsività dal punto di vista dinamico. Equivalenza dinamica tra le ED lineari di ordine due e i sistemi lineari bidimensionali. Applicazioni alla Dinamica Economica e alle scienze sociali. - 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. Altre informazioni Testi consigliati fondamentali: - J. T. Sandefur, Discrete dynamical modelling, Oxford University Press. - R. A. Holmgren, A first course in discrete dynamical systems, Springer Verlag. - S. Goldberg, Introduction to difference equations, Dover. - S. N. Elaydi, An introduction to difference equations, Springer. - M. R. S. Kulenovic and O. Meriono, Discrete dynamical systems and difference equations, Chapman & Hall Testi complementari per esercizi e consultazione: - J. Sandefour, Elementary Mathematical Modeling, Thomson Books/cole, 2003 - M. A. Arbib, Brains, Machines, and Mathematics, Springer Verlag.

36

- D. P. Bertsekas nad J.N. Tsitsiklis, Parallel and Distributed Computation, Prentice- Hall - G. Gandolfo, Economic Dynamics, Sprinter Verlag. - J.P. LaSalle, The stability and control of discrete processes, Springer. Modalità di esame: Compitini durante l’anno come sostitutivi della prova di esame, oppure prova scritta finale. L’orale è facoltativo a scelta dello studente. Per ulteriori informazioni si consulti il sito web: www.fislab.disco.unimib.it//tds

37

Data Mining

Crediti: 6 Docente: E. Fagiuoli Descrizione e Programma del corso 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. Inoltre, lo studente apprenderà l’uso di software specifici. Programma: 1. Introduzione al Data Minino 2. Preprocessing - Data Cleaning , data reduction, feature extraction and selection; discretization. 3. Generalità sulla classificazione supervisionata - Alberi di decisione; classificatori bayesiani; cenni ad altre metodologie. 4. Classificazione Bayesiana - Naive Bayes; tree augmented Naive Bayes; multi net classifier 5. Reti Bayesiane - - Teoria; cenni a reti Bayesiane temporali 6. Cenni a algoritmi per reti Bayesiane - - Algoritmo di Pearl; metodo di Lauritzen- Spiegelhalter. 7. Classificazione non supervisionata: metodi di Clustering - Metodi di aggregazione, metodi gerarchici. - Metodi probabilistici. 8. Modelli regressivi multivariati: complementi - Analisi della varianza; analisi dei residui; analisi degli outliers - Metodi risolutivi: OLS, WLS - Test per lack of fit; collinearità. 9. Risorse di rete e Software - Siti rilevanti - Componenti software - Datasets e casi di studio Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: www.cnds.disco.unimib.it

38

Economia ed organizzazione aziendale Crediti: 6 Docente: P. Bassi Descrizione e Programma del corso 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. Altre informazioni Testi adottati: - C. Grua “Come leggere i bilanci” Ed. Etas (2000) - Brealy/Mayers “Principi di finanza aziendale” (quarta edizione) Ed. McGraw Hill (2003) - R.M. Grant “L’analisi strategica per le decisioni aziendali. Concetti, tecniche, applicazioni” Ed. Il Mulino (edizione del 1999) Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

39

Elaborazione delle immagini (elementi)

Crediti: 6 Docente: R. Schettini Descrizione e Programma del corso Conoscenze e abilità: Il corso fornisce i fondamenti teorici e pratici per l’elaborazione delle immagini. Per fornire allo studente una più ampia visione e comprensione dei temi trattati nell’ambito del corso verranno erogati dei seminari specialistici e verrà proposta una adeguata attività di laboratorio. Lo studente acquisirà competenze specifiche che lo porranno in grado di progettare ed implementare algoritmi e sistemi software per l’elaborazione delle immagini. Programma: - Cenni sulla percezione visiva, la visione umana e artificiale, il colore. - Acquisizione di immagini - Miglioramento delle immagini, filtraggio spaziale lineare e non-lineare - Trasformazioni delle immagini: Fourier, Wavelets, Trasformata Coseno Discreta , analisi componenti principali - Miglioramento delle immagini nel dominio delle frequenze, compressione di immagini (cenni) - Elaborazione immagini a colori Altre informazioni Testi consigliati: - R. Gonzalez, R. Woods, Digital Image Processing, Second Edition, 2002. Prentice Hall. http://www.imageprocessingbook.com/ - Integrato con i lucidi e le dispense a cura dei docenti (formato elettronico e/o cartaceo) Modalità di esame: Colloquio orale (eventuale domanda scritta preliminare). Per ulteriori informazioni sul corso si consulti la sezione “teaching” del sito web: http://old.disco.unimib.it/ivl/

40

Elaborazione numerica dei segnali Crediti: 6 Docente: M. Malcangi Descrizione e Programma del corso Conoscenze: Il corso fornisce allo studente una conoscenza di natura sistemistica della metodologia di elaborazione numerica dei segnali e delle architetture per le applicazioni DSP. Abilità: Il corso consente allo studente di sviluppare applicazioni real-time di elaborazione numerica del segnale in termini di programmazione di dispositivi DSP. Programma: 1. Natura dell’informazione di segnale 2. Digitalizzazione del segnale 3. Modello numerico dell’informazione di segnale 4. Metodologia d’analisi 5. Filtraggio 6. Sintesi di segnali 7. Architetture DSP 8. Elementi di progettazione di applicazioni di elaborazione numerica di segnali realtime basate su DSP Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

41

Fisica Generale 1 (complementi) Crediti: 6 Docente: M. Enriotti Descrizione e Programma del corso Prerequisiti: Padronanza dei concetti base relativi ai fenomeni oscillatori e ondulatori in meccanica, in acustica e nell'elettromagnetismo. Abilità: Analisi e soluzione di semplici problemi riguardanti la fisica dei fenomeni oscillatori e ondulatori. Programma: - Oscillazioni meccaniche (l'oscillatore armonico semplice smorzato e forzato. Il fattore di qualità. Il fenomeno della risonanza. Gli oscillatori anarmonici.) - Oscillazioni elettromagnetiche (Il circuito LC, il circuito RLC. Analisi energetica dei circuiti in c.a.) - Onde meccaniche e sonore ( l'equazione d'onda; onde viaggianti e stazionarie. Pacchetti d'onda e analisi di Fourier. Dispersione: velocità di fase e di gruppo.) - Onde elettromagnetiche ( le equazioni di Maxwell in forma locale; l'equazione d'onda; onde piane e sferiche.Analisi energetica : il teorema di Poynting ) - Elementi di ottica fisica ( interferenza e polarizzazione ). Altre informazioni 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) Modalità 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. Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

42

Fisica Generale 2 (Progettazione Logica Digitale) Crediti: 6 Docente: G. Boella Descrizione e Programma del corso Conoscenze: Il corso introduce alle tecniche di progettazione delle moderne macchine elettroniche digitali. Si parte dai circuiti logici in logica combinatoria, si passa poi alla logica sequenziale sincrona, che è alla base di tutte le macchine digitali, inclusi i computer. Vengono introdotte le moderne tecniche di progettazione di macchine con linguaggi di descrizione di alto livello (CAD-HDL), destinate ai componenti logici ad hardware programmabile. Vengono introdotti anche aspetti pratici della progettazione digitale. In laboratorio vengono effettuati progetti e simulazioni a computer di alcune macchine semplici, dedicate al controllo di processi in tempo reale. Viene anche effettuato un confronto con realizzazioni a microcontrollori. 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. Programma: - Elementi logici. Famiglie logiche. Principi di progetto di logica combinatoria. Progetto con PLD. - Principi di progetto di logica sequenziale sincrona. Progetto di sistemi sequenziali con macchine a stati. Pratica di progetto di macchine sequenziali sincrone. - Progetto di macchine con circuiti hardware programmabili (PLD e FPGA). Uso di software di progettazione di alto livello (HDL). Aspetti pratici della progettazione digitale. Cenni alla progettazione del silicio: gli ASIC. - Interfacciamento fra il mondo dell’elettronica analogica e il mondo dell’elettronica digitale. Altre informazioni - Insegnamento del IV anno di corso (vecchio ordinamento) e del I anno del corso specialistico in Informatica (nuovo ordinamento) Testi consigliati: - Dispense del corso - J.F.Wakerly – “Digital Design – Principles and Practice” – Prentice Hall International (ed. 2001) Modalità d’esame: L’esame (orale) consiste in una discussione basata sulla relazione, presentata dallo studente a seguito delle attività sviluppate in laboratorio, con riferimento ai concetti presentati a lezione. L’esame è tenuto per appuntamento in data concordata con lo studente via email ([email protected]). Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

43

Fondamenti Logico-Matematici dell'Informatica (elementi) Crediti: 6 Docente: F. Cardone Descrizione e Programma del corso 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 principio di induzione matematica). La parte monografica del corso introdurrà lo studente alla teoria delle categorie, un linguaggio usato largamente nella ricerca teorica recente. Programma: - 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. Altre informazioni 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: - 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 - 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. Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

44

Gestione di documenti in ambiente Web Crediti: 6 Docente: H. Le Van Descrizione e Programma del corso Conoscenze: L'obiettivo del corso è quello di presentare gli strumenti per la progettazione di applicazioni per la gestione di documenti in ambiente Web. Una parte del corso è dedicata al linguaggio XML, insieme alle relative tecnologie. Abilità: Alla fine del corso, lo studente acquisirà, oltre all’approfondita conoscenza relativa al linguaggio XML, la capacità di valutare diverse tecnologie e approcci metodologici per la realizzazione di applicazioni in grado di supportare le attività intorno ai documenti in Web, progettare e implementare sistemi client server molto semplici in ambiente Internet Programma: 1. Modelli di Information Retrieval 2. Linguaggi di markup, cenni ad HTML 3. Elementi di XML 4. Applicazione di XML in diversi ambienti 5. Programmazione con XML e librerie DOM 6. Costruzione di siti Web con XML 7. Cenni a Web Services Altre informazioni Nota: il corso comprende le esercitazioni di Laboratorio assistite. La frequenza del Laboratorio è obbligatoria. Per ulteriori informazioni sul corso si consulti il sito web: http://linux.disco.unimib.it/~levan/corsoxml/

45

Informatica medica Crediti: 6 Docente: F. Sicurello Descrizione e Programma del corso 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 minino. 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 - Interrelazione ed integrabilità tra Informatica Medica, Bio e Neuroinformatica: Banche dati gnomiche. Record medico ed informazioni gnomiche. Aspetti di neuroinformatica Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

46

Informatica teorica (Elementi) Crediti: 6 Docente: G. De Michelis Descrizione e Programma del corso 1. Elementi di commutabilità - Macchine di Turing e funzioni parziali ricorsive - Tesi di Church - Insiemi ricorsivi e ricorsivamente enumerabili - Teorema di Rice e problemi irresolubili 2. Semantica formale dei linguaggi di programmazione - Semantica operazionale - Semantica denotazionale - Il teorema del punto fisso di Scott 3. Dimostrazione delle proprietà di un programma: - Semantica assiomatica e - Prove di correttezza 4. Classi di complessità computazionale: P e NP 5. Riduzione tra problemi: problemi NPcompleti Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

47

Ingegneria del software (processo e qualità) Crediti: 6 Docente: M. Pezzè Descrizione e Programma del corso - I principi fondamentali dell’ingegneria del software - Metodi per la gestione delle configurazioni - Gestione del processo di sviluppo - Identificazione e analisi dei requisiti - Uso di prototipi - Controllo di qualità (cenni) - Sviluppo basato su componenti - Stima dei costi - Manutenzione e reingegnerizzazione - Gestione del gruppo di sviluppo Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

48

Ingegneria del software (progettazione Object Oriented) Crediti: 6 Docente: F. Arcelli Descrizione e Programma del corso Conoscenze: Introduzione all’ingegneria del software, alle fasi e modelli del processo di sviluppo e in particolare all’analisi e progettazione orientata agli oggetti utilizzando UML. Abilità: Sapere utilizzare il linguaggio UML anche per progetti di medie/grandi dimensioni. Programma Corso: - Introduzione all’Ingegneria del Software - Processo di sviluppo del Software - Analisi e Progettazione orientata agli oggetti - Introduzione UML - UML per l’Analisi - UML per il Design - Il Rational Unified Process - Progettazione dell’Architettura Software - Introduzione ai Design Patterns - Pattern-oriented analysis and design - Il ruolo dei design pattern nell’ingegneria del software Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

49

Intelligenza artificiale (Elementi) Crediti: 6 Docente: S. Bandini Descrizione e Programma del corso Scopo principale del corso è fornire conoscenze e strumenti di base necessari per poter affrontare temi di ricerca e applicativi dell’Intelligenza Artificiale. Il corso si compone di moduli che intendono dare una panoramica delle differenti aree, domini applicativi ed approcci ed altri nei quali verranno introdotti alcuni metodi e modelli concettuali e computazionali legati all'AI. In particolare saranno affrontati i seguenti argomenti: - Introduzione all’Intelligenza Artificiale classica - Storia dell’Intelligenza Artificiale, relazioni dell’IA con altre discipline - Intelligenza Artificiale, Logica e Knowledge Representation - Ingegneria della conoscenza - Intelligenza artificiale distribuita - Approcci statistici alla risoluzione di problemi - Linguaggi e strumenti per la rappresentazione della conoscenza - Metodi per la risoluzione dei problemi: - Formalizzazione dei problemi ed algoritmi di ricerca - Sistemi a regole - Machine learning - Ragionamento in condizioni di incertezza - Natural Language Processing ed applicazioni Altre informazioni Per ulteriori informazioni sul corso (e per il materiale) si consulti la sezione “didattica” del sito web: www.labic.disco.unimib.it

50

Interazione Uomo Macchina Crediti: 6 Docente: R. Polillo Descrizione e Programma del corso 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) Programma: Prima Parte: Introduzione al design dell'interazione uomo-computer 1. La nozione di usabilità. 2. Progettazione centrata sull'utente. Analisi dei compiti e del contesto d'uso. Esempi. Il ciclo "compito - artefatto". 3. Modelli dell'utente: chi è l’utente?. Aspetti percettivi, cognitivi, culturali. 4. Tecniche per la valutazione di usabilità. 5. L'importanza della prototipazione. Modelli di sviluppo iterativi. 6. La evoluzione dei paradigmi di interazione uomo-computer: linguaggi a comandi, interfacce a menu e forms, la metafora del desktop, l'interfaccia web. Paradigmi emergenti: riconoscimento della scrittura, interfacce vocali, interfacce immersive, agenti intelligenti. 7. Comunicazione visiva e design dell’interfaccia utente: testo, grafica e immagini nel design dell’interfaccia utente. Uso del colore; tipografia. Esempi. 8. Il design dell'interazione. 9. Tempo, cambiamento, movimento. 10. Il trattamento degli errori: la nozione di errore; vari tipi; la gestione degli errori. Parte Seconda: Il design delle applicazioni web 1. La usabilità dei siti web 2. Un modello di qualità per i siti web basato su 7 caratteristiche: architettura, comunicazione, funzionalità, contenuto, gestione, accessibilità, usabilità 3. Esempi di applicazione del modello Altre informazioni Testi consigliati: - Roberto Polillo, Il check-up dei siti web, Apogeo, 2004 - Jakob Nielsen, Web usabilità, Apogeo, 2000 - Donald Norman, La caffettiera del masochista, Giunti Editore - lucidi dalle lezioni Per ulteriori informazioni sul corso si consulti il sito web: www.rpolillo.it/IUM

51

Linguaggi e traduttori Crediti: 6 Docente: L. Pomello Descrizione e Programma del corso Conoscenze: Vengono presentati metodi e tecniche di base per la costruzione di analizzatori lessicali e sintattici di linguaggi di programmazione, i risultati fondamentali della teoria dei linguaggi formali e la loro applicazione. 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 analizzatori lessicali e sintattici di linguaggi di programmazione. Programma: La struttura generale di un compilatore/interprete e le fasi della compilazione. 1. Analisi lessicale: Automi a stati finiti e espressioni regolari. Proprietà dei linguaggi regolari. Analisi lessicale e generatori di analizzatori lessicali. 2. Analisi Sintattica: Grammatiche libere, proprietà dei linguaggi liberi da contesto, automi a pila e aspetti sintattici dei linguaggi di programmazione. Tecniche di analisi sintattica, algoritmi di parsing e generatori di analizzatori sintattici. 3. Traduzione: Forme intermedie e traduzione diretta dalla sintassi. Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://www.mcd.disco.unimib.it/

52

Linguaggi per il Coordinamento e la cooperazione Crediti: 6 Docente: C. Simone Descrizione e Programma del corso Conoscenze: Comprensione dei problemi di realizzazione dei sistemi informatici a supporto del coordinamento di attività svolte da attori (umani e/o artificiali) in modo intrinsecamente distribuito e caratterizzati da requisiti di flessibilità funzionale, adattività al contesto operativo e da interfacce uomo/macchina innovative. Conoscenzadei costrutti linguistici necessari per costruirli. Prerequisiti: Utilizzo degli aspetti del linguaggio Java o di sue estensioni per trattare: la riflessività, i sistemi a regole e le interfacce 3D Programma: 1. Modelli e linguaggi di coordinamento: Concetti di base e criteri di classificazione Principali linguaggi di coordinamento 2. Concetti di base della riflessività nei linguaggi di programmazione. La riflessività in Java 3. Concetti di base dei sistemi a regole. Il linguaggio JESS 4. Concetti di base della programmazione di interfacce 3D. La libreria Java3D Altre informazioni Testi di riferimento: Il materiale didattico verrà indicato durante le lezioni e pubblicato nel sito del corso. Modalità di esame: L’esame consiste nella preparazione di un progetto che utilizza le capacità indicate sopra, coprendo almeno due dei tre aspetti citati. Il progetto può essere richiesto alla docente o proposto dagli studenti, e deve essere svolto in gruppi di 2/3 studenti. Parte del progetto può essere sostituito dallo studio di materiali, che consentono un approfondimento teorico di un argomento del corso, concordati con la docente. Il corso sostituisce il corso di Linguaggi di Programmazione (complementi) Per ulteriori informazioni sul corso consultare il sito web: http://old.disco.unimib.it/simone/ldp_com/index.htm

53

Metodi computazionali per la biologia Crediti: 6 Docente: G. Mauri Descrizione e Programma del corso - Biologia molecolare della cellula (basi) - Modelli statistici; modelli di Markov; modelli di Markov nascosti (Hidden Markov Models) per l’analisi di sequenze - Evoluzione e filogenesi - Reti regolatorie di geni - Clustering di dati da microarrays - Modelli computazionali di cellule - Predizione della struttura secondaria e terziaria di proteine e RNA; - Problemi aperti Altre informazioni Testi consigliati - Baldi, Hatfield, DNA Microarrays and Gene expression, Cambridge University Press Modalità di esame: sviluppo di un progetto e discussione orale Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

54

Metodi formali dell'informatica Crediti: 6 Docente: L. Pomello Descrizione e Programma del corso 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: - Rassegna delle tecniche formali di specifica e disegno di sistemi concorrenti. - Teoria generale delle reti di Petri: la struttura di un sistema e il comportamento non sequenziale; proprietà di comportamento e loro verifica. - Sistemi di transizioni e teoria delle regioni; specifica e sintesi. - Reti ad alto livello, reti stocastiche e reti temporizzate: cenni. - I modelli di processi comunicanti e le algebre di processi. - Semantica della concorrenza ed equivalenza all'osservazione. - Modelli di agenti mobili (cenni). Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://www.mcd.disco.unimib.it/

55

Realtà virtuale Crediti: 6 Docente: F. Gardin Descrizione e Programma del corso 1. Introduzione al concetto di Realtà Artificiale: Definizione e cenni storici: Myron Krueger e Jaron Larnier 2. Nozione di canale fisiologico e cognitivo: Cenni sulla fisiologia dei canali sensoriali. Universo delle percezioni cognitive. Nozione di accoppiamento dei canali cognitivi 3. Relazioni tra spazio reale e spazi virtuali 4. Progettazione di percezioni realistiche: funzione di realismo e relativa dimensione del dominio di tale funzione 5. Percezione della profondità spaziale, basi percettive e relative tecniche di realizzazione di ‘stereo cues’ 6. Nozione di driver per i dispositivi di attuazione e rilevazione 7. Dispositivi di attuazione: Schermi, schermi auto-stereoscopici, CAVE, Boom, caschi, occhiali shutter. Dispositivi di generazione di odori. Dispositivi e modelli di generazione di suoni stereo. Concetto di georeferenziazione dei suoni 8. Dispositivi di rilevazione. Sensori di posizione e gradi di libertà. Criteri di valutazione di un sensore: capacità discriminante spaziale-temporale, riproducubilità delle misure, dipendenza dal contesto, ecc. Tipologie di sensori e relativi principi di funzionamento 9. Nozione di autopercezione nella realtà Virtuale 10. Evoluzione della freccia nelle interfacce a finestre e livelli di autopercezione relativi. 11. Dispositivi di rilevazione accoppiati all’attuazione (haptic devices) 12. Caratteristiche fisiologiche dei canali sensoriali percettivi. Modelli cognitivi associati ai diversi canali sensoriali 13. Architettura generale di un ambiente di interazione di Realtà Virtuale 14. Nozione di base di Computer Graphics 15. Modellazione grafica di una realtà virtuale: ambienti e strumenti di realizzazione 16. Condivisione di ambienti di Realtà Virtuale 17. Realtà Virtuale Aumentata 18. Internet e la Realtà Virtuale 19. Realtà Virtuale applicata. Intelligenza Artificiale e Realtà Virtuale. Telepresenza. Esempi di applicazioni scientifiche e ingegneristiche della Realtà Virtuale. Esempi di applicazioni della Realtà Virtuale nel settore Medico e nei giochi Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

56

Robotica (Elementi) Crediti: 6 Docente: F. M. Marchese Descrizione e Programma del corso Descrizione: La Robotica è un'area rilevante per l’industria manifatturiera, con rilevanti sviluppi e ramificazioni nelle aree della domotica, del settore sanitario (diagnosi ed operazioni a distanza, strumentazioni di laboratorio), l’industria spaziale (esplorazione ad attività sulle stazioni orbitanti), l’esplorazione e l'estrazione off-shore, il monitoraggio di impianti ad alto rischio (impianti chimici, centrali nucleari, etc.) ed infine nell’ambito dell'intrattenimento (ad es. l’iniziativa RoboCup con robot calciatori, oppure il cagnolino della Sony). Scopo del corso è di insegnare le nozioni introduttive di Robotica Industriale e di Controlli Automatici applicati alla Robotica. Attraverso la realizzazione di un progetto, lo studente è stimolato ad apprendere come organizzare il proprio lavoro per il conseguimento di un preciso obiettivo, anteponendo alla sua realizzazione le fasi di analisi del problema, di modellizzazione e quindi di progettazione della soluzione. Programma: 1. Introduzione alla Robotica Industriale 2. Cinematica diretta ed inversa dei bracci manipolatori 3. Sensoristica 4. Sistema di controllo in velocità e posizione di un giunto 5. Sistemi di controllo interagenti e disaccoppiati di n giunti Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://old.disco.unimib.it/robotica/

57

Sistemi di supporto alla cooperazione Crediti: 6 Docente: G. De Michelis Descrizione e Programma del corso 1. Il lavoro come processo cooperativo 2. Comunità e cooperazione 3. Tipologie di supporti all cooperazione 3.1. Comunicazione 3.2. Collaborazione 3.3. Coordinamento 3.4. Gestione della conoscenza 3.5. Piattaforme per la cooperazione 4. Architetture per i sistemi di supporto alla cooperazione 5. Analisi di sistemi di supporto alla coperzione esistenti 6. Come si progetta un sistema di supporto alla cooperazione Nel corso verrà utilizzata una piattaforma di cooperazione. Alla fine del corso sarà richiesto agli studenti di progettare in gruppi un sistema di supporto alla cooperazione Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

58

Sistemi distribuiti

Crediti: 6 Docente: F. De Paoli Descrizione e Programma del corso Le applicazioni in rete rappresentano una parte sempre più rilevante del software prodotto. Sempre più spesso si sente parlare di sistemi peer-to-peer (p2p), sistemi ad agenti, applicazioni Web, Web Services, pervasive e ubiquitous computing. Lo scopo del corso è comprendere i concetti e i modelli dei sistemi distribuiti che sottendono lo sviluppo dei nuovi sistemi e delle nuove applicazioni. Studiare le principali architetture e tecnologie per lo sviluppo di applicazioni. Acquisire la capacità di progettare e sviluppare semplici applicazioni utilizzando le tecnologie studiate durante il corso: Java/RMI, Java/EJB, .NET e Web Services. Programma: 1 Definizione e motivazioni per i sistemi distribuiti. Concetti fondamentali: comunicazione e naming, concorrenza e sincronizzazione, trasparenza. Proprietà fondamentali: prestazioni, affidabilità, flessibilità, disponibilità e scalabilità. 2 Richiami dei concetti fondamentali delle reti (TCP/IP). Comunicazione basata su scambio messaggi e su chiamata di procedura: socket e remote procedure call. 3 Architetture e modelli per sistemi distribuiti: modello client/server, modello peer-to-peer, comunicazione uno-a-uno e uno-a-molti, sistemi ad eventi, modelli per la gestione del tempo. Cenni ad algoritmi distribuiti. 4 Java-RMI: Caricamento ed esecuzione dei programmi, il modello a eventi, la sicurezza. Architettura di server basati su Socket e RMI. 5 Middleware: CORBA, J2EE e DCOM/.NET. Interface Definition Language (IDL) e linguaggi di implementazione; Naming e Access. Il modello a componenti di J2EE. I tipi EJB. 6 Service Oriented Computiong: sviluppo di applicazioni web e servizi. WSDL e UDDI. Linguaggi per la descrizione di processi e composizione di servizi. Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://linux.disco.unimib.it/~depaoli/ds

59

Tecnologie informatiche per la comunicazione Crediti: 6 Docente: R. Bisiani Descrizione e Programma del corso Prerequisiti: Programmazione e sistemi operativi. Obiettivi: Sarà fornita agli studenti una conoscenza di base delle tecnologie di rete radio, WiFi, GPRS, UMTS, ecc. sufficiente a capire quando e come impiegare ciascuna tecnologia. La presentazione sarà sia qualitativa che quantitativa, quindi con attenzione anche ai lati prestazionale ed economico. Il corso tratterà anche delle problematiche legate alla programmazione di applicazioni mobili. Programma: - Nozioni di base sulle problematiche di trasmissione dati via radio e tecnologie cellulari. - Aloha, GSM, GPRS, UMTS, WiFi, Bluetooth e altre tecnologie ancillari. - Mobile IP e TCP, WAP. Altre informazioni Testi consigliati: Schiller, “Mobile Communications” Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

60

Teoria dell'informazione (codici e crittografia) Crediti: 6 Docente: A. Leporati Descrizione e Programma del corso Obiettivi del corso: acquisizione delle nozioni e dei concetti di base di teoria dei codici, teoria dell'informazione e crittografia. 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 e codifica predittiva 3. Teoria dell'informazione: Entropia; Codici di Shannon-Fano; Primo teorema di Shannon; Canale e mutua informazione; Capacità di canale; Secondo teorema di Shannon 4. Crittografia: Crittosistemi monoalfabetici; Crittosistemi polialfabetici; Crittosistemi simmetrici: DES e AES; Sicurezza alla Shannon e One Time Pad; Generatori pseudocasuali; Crittosistemi a chiave pubblica: nozioni generali; I crittosistemi ElGamal ed RSA; Attacchi a RSA; Sistemi di prova interattivi e dimostrazioni zeroknowledge Altre informazioni Materiale didattico: - Per la parte di teoria dei codici e teoria dell'informazione: R.W.Hamming. Coding and Information Theory. Seconda edizione, Prentice-Hall, 1986. - Per la parte di crittografia: dispense a cura del docente. Letture consigliate: - D.R.Stinson. Cryptography. Theory and Practice. Seconda edizione, Chapman & Hall/CRC, 2002. - A.Salomaa. Public-Key Cryptography. Seconda edizione, Springer, 1996. - P.Ferragina, F.Luccio. Crittografia. Principi, algoritmi, applicazioni. Bollati Boringhieri, 2001. Modalità d'esame: - L'esame consiste in una prova orale. - Eventualmente, l'esame può includere la discussione di una relazione su un tema di approfondimento concordato col docente. Per ulteriori informazioni sul corso si consulti il sito web: www.bio.disco.unimib.it/~leporati/tinf.html

61

Insegnamenti Specifici del Corso di Laurea Specialistica in Informatica

A.A. 2004/2005 Gli insegnamenti previsti per la Laurea Specialistica in Informatica che non compaiono nella seguente tabella sono condivisi con la Laurea di Primo livello in Informatica o mutuati da altri Corsi di Laurea. Insegnamento S. S. D. CFU Algoritmi e Strutture dati (Soft Computing) INF/01 6 Analisi Numerica MAT/08 6 Apprendimento Automatico INF/01 6 Architettura degli Elaboratori e Parallelismo INF/01 6 Cibernetica (Complementi di Teoria dei Sistemi) INF/01 6 Controllo della Qualità del Software ING-INF/05 6 Elaborazione delle Immagini (Complementi) INF/01 6 Evoluzione dei Sistemi Software e Reverse Engineering ING-INF/05 6 Fisica Generale 2 (Elementi di Elettromagnetismo) FIS/01 6 Fondamenti Logico-Matematici dell’Informatica (Complementi) INF/01 6 Gestione e Condivisione della Conoscenza INF/01 6 Informatica Industriale ING-INF/05 6 Informatica Teorica (Complementi) INF/01 6 Information Retrieval INF/01 6 Ingegneria della Conoscenza e Sistemi Esperti INF/01 6 Intelligenza Artificiale (Complementi) INF/01 6 Laboratorio di Progettazione ING-INF/05 6 Modelli Decisionali per l'e-Commerce MAT/09 6 Insegnamento S. S. D. CFU Processo di Sviluppo di Sistemi Complessi ING-INF/05 6 Rappresentazione della Conoscenza INF/01 6 Robotica (Complementi) ING-INF/05 6 Sicurezza dei Sistemi Informatici INF/01 6 Sistemi di Data Warehouse INF/01 6 Sistemi di Enterprise Resource Planning (ERP) MAT/09 6 Sistemi Informativi (Progettazione e Organizzazione) ING-INF/05 6 Visione Artificiale INF/01 6

62

Algoritmi e Strutture Dati (Soft Computing) Crediti: 6 Docente: L. Vanneschi Descrizione e Programma del corso Conoscenze: Il corso si prefigge di presentare alcune tecniche speciali di elaborazione,in particolare in relazione a problemi complessi di ottimizzazione, apprendimento econtrollo, affrontandone sia gli aspetti teorici che i risvolti applicativi. Abilità: Risolvere problemi concreti con tecniche evolutive o di apprendimento automatico Programma: - Introduzione a problemi complessi, problemi di ottimizzazione classi di approssimazione, ottimizzazione stocastica, tecniche di ricerca locale (hill climbing, algoritmo di Metropolis, simulated annealing). - Algoritmi Evolutivi: o Algoritmi Genetici: Il concetto di rappresentazione; operatori e parametri critici; topologia degli operatori; teoria degli algoritmi genetici e modelli; problemi GA hard e problemi GA easy; esempi e applicazioni a problemi reali; prospettive e limiti o Programmazione Genetica: Evoluzione di struttura a taglia variabile; operatori e parametri critici; teoria e modelli; esempi e applicazioni a problemi reali; programmazione genetica distribuita e parallela - Reti neurali: il paradigma connessionista; il percettrone mono- e multi- strato; backpropagation; altri modelli di reti neurali; dinamica delle reti neurali; apprendimento nelle reti neurali; parametri critici; esempi e applicazioni a problemi reali; prospettive e limiti - Tecniche fuzzy: Logica fuzzy; Matematica fuzzy; Sistemi fuzzy; Esempi ed applicazioni a problemi reali. - Tecniche ibride: Sistemi neuro-fuzzy; Evoluzione di reti neurali tramite algoritmi genetici e programmazione genetica; Evoluzione di sistemi fuzzy. Altre informazioni Testi consigliati: - Tettamanzi, M. Tomassini, "Soft Computing", Sprinter - M. Mitchell, "Introduzione agli algoritmi genetici", Apogeo - W. Banzhaf, P. Nordin, R. Keller and F. Francone, "Genetic Programming, an introduction", Morgan Kaufmann - 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, con l’uso delle tecniche presentate nel corso. Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

63

Analisi Numerica Crediti: 6 Docente: R. Tirani Descrizione e Programma del corso Programma: - Interpolazione: Formule di interpolazione polinomiale e polinomiale a pezzi. Errore in un processo interpolatorio. Questione di convergenza. - Metodo dei minimi quadrati nel discreto - Integrazione approssimata: Formule di Newton – Cotes e di Gauss. Formule composte. - Convergenza di una successione di formule di quadratura. Errore e sua stima. - Soluzione numerica del problema di Cauchy: Metodi a un passo e a più passi. Metodi di predizione e correzione. Errori e loro stima. Passo variabile. Integratore automatico. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

64

Apprendimento Automatico Crediti: 6 Docente: G. Mauri Descrizione e Programma del corso Conoscenze: Tecniche algoritmiche per la estrazione di conoscenza da dati di varia natura Abilità: progetto, sviluppo e sperimentazioone di programmi di apprendimentoautomatico basati su diverse tecniche Programma: - Introduzione al problema dell'apprendimento automatico - Alberi di decisione: definizioni, spazio delle ipotesi, il problema dell'overfitting - Reti neurali artificiali: definizioni di base, percettrone e relativi risultati, reti multistrato e retropropagazione - Apprendimento bayesiano: teorema di Bayes, classificatori bayesiani, algoritmo di Gibbs, reti bayesiane - Teoria computazionale dell'apprendimento: il modello PAC, la dimensione di Vapnik-Chervonenkis, il modello mistake bound - Metodi kernel-based: support vector machines - Reinforcement Learning Altre informazioni Testi consigliati: Tom Mitchell, Machine learning, McGraw-Hill Modalità di esame: sviluppo di un progetto e discussione orale Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

65

Architettura degli Elaboratori e Parallelismo Crediti: 6 Docente: R. Bisiani Descrizione e Programma del corso L’obbiettivo di questo corso è di estendere le conoscenze di architettura dei calcolatori acquisite nel corso di base e affrontare il problema dell’ottimizzazione delle prestazioni. Partendo da un rinfresco dei principi di funzionamento di un calcolatore, intendiamo coprire gran parte delle tecniche architetturali che permettono di migliorare il rapporto costo/prestazioni o semplicemente le prestazioni di un calcolatore. Queste tecniche coinvolgono generalmente qualche forma di esecuzione parallela, sia essa a livello di unità funzionali, e quindi “nascosta” all’interno della CPU come nel caso di un Pentium, sia essa a livello di interi programmi eseguiti in parallelo su CPU differenti e loscamente interconnesse, come nel caso di alcune macchine parallele. In sintesi il corso tratterà di come a partire da una idea guida generale – l’esecuzione in parallelo - viene implementato un unico insieme di meccanismi a livelli diversi per ottenere lo stesso risultato: eseguire un algoritmo più in fretta e con minor costo. Programma - Considerazioni di base e misura delle prestazioni. - Misura sul campo delle prestazioni di un’architettura - Tecniche di base di pipelining - Progetto dell’implementazione di una CPU con unità funzionali multiple - Instruction Set Architecture (ISA) – considerazioni e alternative – ruolo dei compilatori - Analisi del codice generato per un MIPS-64, valutazione dell’influenza dell’ISA sulle prestazioni - Instruction Level Parallelism (ILP) – soluzioni hardware - Simulazione del flusso di esecuzione in un’architettura implementata con tecniche per lo sfruttamento hardware dell’ILP - ILP – soluzioni software tra cui VLIW - Riscrittura di piccole sequenze di codice per sfruttare l’ILP in diverse architetture - Gerarchie di memoria e considerazioni tecnologiche che le giustificano - Calcolare le prestazioni di una gerarchia di memoria a più livelli sulla base di statistiche reali - Thread-level Parallelism - Studio di un programma parallelo per un’architettura message-passing - Memorie di massa - Valutazione in Internet delle soluzioni RAID a delle specifiche necessità prestazionali e di robustezza - Interconnessioni - Valutazione in Internet delle soluzioni SAN che rispondono a certe specifiche Altre informazioni Testi utilizzati - Hennessy, Patterson, Computer Architecture – A Quantitative Approach, Terza edizione, Morgan Kaufmann Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

66

Cibernetica (Complementi di Teoria dei Sistemi) Crediti: 6 Docente: G. Cattaneo Descrizione e Programma del corso Conoscenze: Sistemi dinamici a tempi discreti in spazi degli stati di dimensione generica (non solo uno o bi-dimensionale). Padronanza teorica della moderna teoria del caos in ambito informatico. Uso dei frattali con applicazioni alla compressione delle immagini. Dinamiche di reti neurali deterministiche. 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”. Programma: - Teoria astratta dei Sistemi Dinamici a Tempi Discreti (SDTD). Attrattività e repulsività di punti di equilibrio e di sottosistemi dinamici. Stabilità e instabilità di punti di equilibrio, di orbite e di sistemi. Metodo diretto di Lyapunov sulla stabilità. Coniugazione topologica fra SDTD e invarianti dinamici correlati. Sottosistemi dinamici come sottoinsiemi positivamente invarianti (insiemi intrappolanti). - SDTD Lineari reali multidimensionali e loro complessificazione. Condizioni sufficienti di stabilità e instabilità legate agli autovalori. Applicazioni alle equazioni alle differenze di ordine qualsiasi. La trasformata Z, la trasformata di Fourier discreta (estensione alla “fast Fourier transformation”) e loro applicazioni allo studio dei SDTD lineari. - 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. Caos nello spazio delle fasi delle successioni mono e bi – infinite su alfabeti finiti. La mappa di shift come esempio di caos topologico. - 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. - Reti neurali: Equivalenza fra reti Booleane e reti bipolari. Reti neurali strettamente separatrici e reti intere. Dinamiche discrete di reti neurali: modalità di elaborazione parallela e modalità sequenziale. Funzioni di Lyapunov per reti neurali: determinazione della periodicità massima dei punti ciclici e del transitorio. Altre informazioni 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 facoltativi durante l’anno. Discussione di una Tesina e prova orale. Link al corso: < www.fislab.disco.unimib.it//tds> Per ulteriori informazioni sul corso rivolgersi direttamente ai docenti.

67

Controllo della Qualità del Software Crediti: 6 Docente: M. Pezzè Descrizione e Programma del corso - Dimensione del problema - Principi di base - Il processo di controllo qualità - Modelli Finiti - Modelli di dipendenza di flusso e dati - Esecuzione Simbolica - Verifica a stati finiti - Selezione di test e criteri di adeguatezza - Test funzionale - Test strutturale - Test di Software orientate agli oggetti - Generazione di casi di test e supporto run-time - Ispezione e Analisi statica - Pianificazione e monitoraggio - Test di integrazione e di componenti - Test di sistema, accettazione e regressione - Automazione e documentazione Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

68

Elaborazione delle Immagini (complementi) Crediti: 6 Docente: R. Schettini Descrizione e Programma del corso Conoscenze ed abilità: Il corso ha l'obiettivo di fornire agli studenti le competenze per la progettazione e sviluppo di sistemi di imaging avanzati. Nell’ambito del corso verranno erogati dei seminari specialistici e verrà proposta una adeguata attività di laboratorio. Lo studente acquisirà competenze specifiche che lo porranno in grado di progettare ed implementare algoritmi e sistemi software per l’elaborazione delle immagini di elevata complessità. Prerequisiti: Elaborazione delle immagini (elementi) Programma: - Morfologia matematica - Segmentazione di immagini per regioni e per contorni - Descrizione e rappresentazione di immagini (regioni, contorni, approssimazione poligonale) - Riconoscimento e classificazione di immagini - Ricerca per contenuto in database di immagini - Elaborazione ed analisi di sequenze video Altre informazioni Testi consigliati: - R. Gonzalez, R. Woods, Digital Image Processing, Second Edition, 2002. Prentice Hall. http://www.imageprocessingbook.com/ - Integrato con i lucidi e le dispense a cura dei docenti (formato elettronico e/o cartaceo) Modalità di esame: Colloquio orale Per ulteriori informazioni sul corso si consultino i siti web: http://old.disco.unimib.it/elabimgcompl/ http://old.disco.unimib.it/ivl/ (cliccare teaching)

69

Evoluzione dei Sistemi Software e Riverse Engineering Crediti: 6 Docente: F. Arcelli Descrizione e Programma del corso Il corso tratterà gli aspetti e problematiche principali dell’evoluzione del software e della reverse engineering. Verranno sperimentati, utilizzati e confrontati diversi tool di reverse engineering, in particolare tools per la ricostruzione dell’architettura software. Programma: - Legacy Systems: Struttura, Progettazione e valutazione dei sistemi legaci - Evoluzione dei Sistemi Software - Il riuso del software - Le dinamiche di Evoluzione del software - Manutenzione del Software: problematiche principali - Evoluzione dell’Architettura - Reverse Engineering - Approcci generali alla reverse engineering, campi di applicazione - Reverse engineering e manutenzione - Reverse engineering e riuso - Reengineering, Refactoring, Restructuring - Reverse Engineering orientata agli oggetti - Ricostruzione dell’architettura software - Riconoscimento dei Design Patterns - Metodologie, tecniche e strumenti di Reverse Engineering Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

70

Fisica Generale 2 (Elementi di Elettromagnetismo) Crediti: 6 Docente: G. Boella Descrizione e Programma del corso Conoscenze: Scopo del corso è incrementare le conoscenze di base dell’Elettricità, del Magnetismo, dell’Elettro-magnetismo e dell’Ottica nella moderna visione della Fisica, a completamento di quanto già studiato in Fisica Generale I. Si parte dalla fenomenologia per giungere alle leggi quantitative matematiche (semplici modelli matematici dei fenomeni fisici), che sono alla base degli sviluppi dell’attuale tecnologia in tutti i campi, ma in particolar modo nel campo dell’elettronica e nei campi ad essa collegati. 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. Programma: - Elettrostatica – La carica elettrica e la legge di Coulomb. Il campo elettrico. La legge di Gauss. Il potenziale elettrico. Condensatori e dielettrici. - Elettrodinamica – Corrente e resistenza. Circuiti in corrente continua. Il campo magnetico delle correnti. La legge di Ampere. - 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. - 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. Altre informazioni - Insegnamento del IV anno di corso (vecchio ordinamento) - Insegnamento del I anno del corso specialistico in Informatica (nuovo ordinamento) 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 di 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. Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

71

Fondamenti logico-matematici dell’informatica (complementi) Crediti: 6 Docente: U. Moscato Descrizione e Programma del corso 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. 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. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

72

Gestione e Condivisione della Conoscenza Crediti: 6 Docente: C. Simone Descrizione e Programma del corso Conoscenze: Problematiche relative alla progettazione ed utilizzo di tecnologie di gestione e condivisone della conoscenza in ambienti organizzativi Panoramica delle principali proposte tecnologiche in ambito commerciale e di ricerca. Abilità: Capacità critiche nella progettazione di tecnologie innovative di gestione e condivisone della conoscenza in ambienti organizzativi Programma: - Conoscenza, innovazione e organizzazione. - Creazione di conoscenza: il modello a fasi di Nonaka-Takeuchi - Gruppo, team e Comunità di Pratica. - Caratteristiche delle tecnologie di gestione e condivisone della conoscenza in relazione al modello a fasi - Illustrazione di alcune tecnologie, in ambito commerciale e di ricerca, significative per ciascuna fase: evoluzione e prospettive di innovazione. Altre informazioni Testi consigliati: Il materiale viene indicato durante il corso e reso disponibile sul sito: old.disco.unimib.it/simone/gestcon Modalità di esame: Colloquio con approfondimento di un tema a scelta dello studente Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

73

Informatica Industriale Crediti: 6 Docente: (da definire) Descrizione e Programma del corso Programma 1. introduzione ai sistemi embedded 2. cenni ad approcci formali per la gestione del tempo reale 3. scheduling per sistemi real-time 4. sistemi operativi real-time 5. review dei bus di campo 6. plc e loro programmazione 7. microcontrollori industriali, periferiche e loro interconnessione 8. programmazione dei microcontrollori Organizzazione del corso Lezioni teoriche; esercitazioni introduttive alla attività di laboratorio; per il laboratorio si prevede una attività basata sull'uso di microcontrollori usuali nell'ambito dei sistemi embedded ed annessi tools software (ad esempio microchip pic e sua catena programmativa); interfacciamento di periferiche; sviluppo di programmi per semplici esempi applicativi. Prerequisiti - fortemente consigliati: fisica generale 2 (progettazione logica digitale) - consigliati: fisica generale 2 (elementi di elettromagnetismo), robotica (elementi) Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://old.disco.unimib.it/informaticaindustriale

74

Informatica Teorica (complementi) Crediti: 6 Docente: G. De Michelis Descrizione e Programma del corso 1. Elementi di teoria dei domini 2. Semantica denotazionale per programmi ricorsivi 3. Tipi di dati astratti 4. Introduzione alle reti di Petri 5. Il Calcolo delle minimi pre-condizioni di Dijkstra 6. Algoritmi di approssimazione 7. Classi di complessità nello spazio 8. Classi di complessità in spazio sub-lineare Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

75

Ingegneria della Conoscenza e Sistemi Esperti Crediti: 6 Docente: S. Bandini Descrizione e Programma del corso Scopo principale di questo corso è presentare e abilitare all’uso di modelli, strutture e metodi computazionali per l'analisi, la progettazione, la codifica e l'integrazione di sistemi basati sulla conoscenza, sistemi di gestione della conoscenza e sistemi esperti. Per raggiungere questo obiettivo verranno forniti strumenti di natura concettuale, computazionale e metodologica indirizzati ad 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. Prerequisiti utili, ma non necessari, al corso sono nozioni di Logica del primo ordine, Programmazione in linguaggio Java e Ingegneria del Software. Il corso si articola su tre livelli: - Concettuale. Breve storia e concetti di base relativi ai sistemi basati sulla conoscenza (KBS) e loro caratteristiche di rappresentazione, architetturali e computazionali. Introduzione ai sistemi esperti. - Computazionale. Analisi dei principali strumenti computazionali per lo sviluppo di KBS. Ambienti di sviluppo per KBS, presentazione e sperimentazione delle shell JESS e CLIPS, problematiche d'integrazione con altre tipologie di applicazioni (es. database, processi concorrenti, ...). KBS ad architettura ibrida. - Metodologico. Tecniche di Ingegneria della Conoscenza per la progettazione di KBS. Classificazione dei problemi. Introduzione alle metodologie di Acquisizione ed Elicitazione della conoscenza. Strumenti per l'acquisizione e rappresentazione della conoscenza, sia formali (Reti-SA, Reti Semantiche, ...) che automatici (CommonKADS, KARL e Protegè). Casi paradigmatici. Sistemi esperti e ingegneria del software: caratteristiche e ciclo di vita dei KBS, 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. Altre informazioni Ulteriori informazioni sul corso (e per il materiale) si consulti la sezione “didattica” del sito web: www.labic.disco.unimib.it

76

Intelligenza Artificiale (complementi) Crediti: 6 Docente: S. Bandini Descrizione e Programma del corso Il corso si propone di introdurre metodi e i modelli concettuali dell’Intelligenza Artificiale Distribuita e mostrarne l’applicazione nei contesti di simulazione e per il problemsolving. Innanzitutto saranno illustrate le origini e gli sviluppi storici di tale disciplina e le forti relazioni interdisciplinari che la caratterizzano. Saranno introdotti e confrontati gli approcci centralizzati e distribuiti alla simulazione e alla risoluzione di problemi e particolare attenzione sarà dedicata ai sistemi dinamici dscreti (es. Automi Cellulari) e ai sistemi ad agenti. A tale scopo saranno definiti i concetti di agente e sistema multiagente, diversi modelli di comportamento (agenti eliberativi e reattivi), di architettura (verticale, orizzontale, ibrida) e d’interazione comunicazione e coordinamento) per agenti. Parte del corso sarà dedicata all’applicazione dell’approccio multiagente alla modellazione di sistemi e problemi complessi. A tale scopo saranno mostrati alcuni sempi paradigmatici e alcuni strumenti per lo sviluppo di applicazioni e simulazioni basate su sistemi multiagente. Altre informazioni Testi consigliati: J. Ferber, Multi-Agent Systems: An introduction to Distributed Artificial Intelligence, Addison Wesley, 1999 Per ulteriori informazioni sul corso (e per il materiale) si consulti la sezione “didattica” del sito web: www.labic.disco.unimib.it

77

Laboratorio di Progettazione Crediti: 6 Docente: F. Tisato Descrizione e Programma del corso Conoscenze: Applicazione di metodologie di analisi e progetto Object-Oriented a specifici domini applicativo. Pattern tipici di analisi e progettazione. Valutazione comparativa, sui diversi domini, degli aspetti comuni e di quelli specifici. Abilità: analisi, progetto e implementazione di sistemi software di media complessità, acquisita attraverso lo sviluppo di un progetto e la discussione dei risultati raggiunti nelle sue fasi. Articolazione: Lezioni frontali (16 ore) - Richiami sulle metodologie di analisi e progetto Object-Oriented, su UML e sulle problematiche di gestione di un progetto software. Obiettivi dell’analisi e del progetto: oggetti di dominio e oggetti architetturali. Pattern. Il passaggio all’architettura concreta: scelta delle piattaforme. Modalità di documentazione dei progetti. - Presentazione di problemi tipici di alcuni domini applicativi: Comunicazione, Finanza e Gestione, Image Processing, Robotica, Sistemi Informativi, Tempo Reale(1) Esercitazioni (24 ore): sono articolate in turni distinti per contenuti, ciascuno orientato a uno specifico dominio applicativo. All’inizio del corso gli studenti potranno scegliere il turno in base ai loro interessi (curriculum, tesi, stage, eccetera). Le esercitazioni consistono nella presentazione e nella discussione in aula dei progetti svolti da gruppi di studenti. Laboratorio (24 ore): attività svolta autonomamente dagli studenti. Prerequisiti: Conoscenza di UML. Ingegneria del Software (Progettazione). Consigliato: Ingegneria del Software (Processo di Sviluppo). Altri prerequisiti dipendono dal dominio applicativo scelto. Altre informazioni Testi: - M Fowler, “UML Distilled”, Addison-Wesley. - E. Gamma et al. “Design Patterns”, Addison-Wesley. - M. Fowler, “Analysis Pattern”, Addison-Wesley. - Altri testi saranno consigliati in funzione degli specifici domini applicativi. Frequenza: la frequenza è fortemente consigliata, poiché il corso è organizzato a “workshop” e la discussione dei singoli progetti ne costituisce il contenuto principale. Modalità di esame: la discussione in aula dei singoli progetti costituisce parte integrante dell’esame, che consiste in una presentazione finale del progetto. Destinazione e collocazione: Laurea Specialistica(2), II semestre del II anno Note: (1) L’insegnamento sostituisce il vecchio Sistemi di Elaborazione dell’Informazione (Tempo Reale), fruibile da studenti della triennale. Il turno orientato al dominio applicativo del Tempo Reale sarà organizzato in modo da poter essere fruito da studenti della Laurea triennale.

78

(2) L’insegnamento sostituisce Laboratorio di Informatica (Progettazione). Qualora, in accordo con i Manifesti degli scorsi anni, sia frequentato da studenti della Laurea Triennale, si potranno scegliere progetti che non richiedano competenze di dominio applicativo acquisibili nella Laurea Specialistica. È sconsigliato l’inserimento del corso nel Piano di Studi di studenti della triennale che intendano iscriversi successivamente alla specialistica. Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

79

Modelli decisionali per l’e-Commerce Crediti: 6 Docente: E. Messina Descrizione e Programma del corso Il corso è finalizzato all’acquisizione delle conoscenze di base per la costruzione e l’analisi di modelli, sia deterministici che stocastici, per lo sviluppo di soluzioni relative a problemi decisionali in ambito internet e web. In particolare verranno presi in considerazione modelli in grado di rappresentare complessi problemi decisionali in condizioni di incertezza. Programma 1. Internet & the Web : modelli di base 2. Modelli e metodi di rappresentazione e classificazione del comportamento degli utenti 3. Click-stream analysis 4. Modelli per Customer Relationship Management 5. Analisi di sistemi logistici e produttivi Web based. Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: www.life.disco.unimib.it

80

Progettazione e sviluppo di sistemi complessi Crediti: 6 Docente: G. Denaro Descrizione e Programma del corso Prerequisiti: Ingegneria del software. Obiettivo del corso: Il corso intende studiare in dettaglio i problemi legati alla progettazione e allo sviluppo di sistemi digitali complessi e di grosse dimensioni, approfondendo quanto già studiato nei corsi di Ingegneria del Software. Lo studente maturerà la conoscenza teorico-pratica di metodi moderni come sviluppo per componenti e design pattern. Non sono ancora definiti il programma dettagliato e l’organizzazione del corso stesso. In ogni caso, il corso offrirà un buon compromesso fra attività di lezione frontale e attività di pratica di progettazione e sviluppo. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

81

Rappresentazione della Conoscenza Crediti: 6 Docente: S. Bandini Descrizione e Programma del corso Prerequisiti: Nozioni di base di Logica e di Intelligenza Artificiale Il corso prevede di introdurre le tematiche fondamentali della Knowledge Representation, focalizzandosi tanto sugli aspetti più strettamente rappresentazionali e statici della disciplina, quanto su quelli più spiccatamente dinamici relativi alla nozione di inferenza. Il corso introduce diversi strumenti formali che hanno caratterizzato nel passato e caratterizzano attualmente lo sviluppo di tale disciplina, senza dimenticare i contesti applicativi che rappresentano oggi la sfida per lo studio e l’analisi della loro trattabilità computazionale. In particolare, le lezioni affronteranno: - Panoramica sui linguaggi formali di rappresentazione della conoscenza “tradizionali” - Logica Classica proposizionale e di quella predicativa - Logica Modale, quale strumento di rappresentazione simbolica della conoscenza alternativo alla logica del primo ordine. Applicazioni della logica modale in robotica, pianificazione automatica, Pervasive Computing e Agent Technology. - Common Sense Reasoning. Principali logiche nonmonotone (Logica di Default, Logica Autoepistemica). Introduzione ai linguaggi di programmazione AnswerSet Prolog e DLV. - Description Logic (o "Logiche terminologica"). Sono previste una serie di esercitazioni in laboratorio, nel corso delle quali si affronteranno alcune delle problematiche relative all’applicazione dei principali formalismi descritti durante il corso a domini reali, suggeriti dagli studenti perché relativi a loro progetti di ricerca in fase di sviluppo. Altre informazioni Ulteriori informazioni sul corso (e per il materiale) si consulti la sezione “didattica” del sito web: www.labic.disco.unimib.it

82

Robotica (complementi) Crediti: 6 Docente: D. Sorrenti Descrizione e Programma del corso Programma 1. pianificazione della traiettoria 2. review di sistemi di range-sensing 3. architetture di controllo di alto livello per robot autonomi e multi-robot 4. il problema della auto-localizzazione in robotica mobile 5. il problema dello slam in robotica mobile Abilità acquisite: Attraverso il laboratorio, lo studente è stimolato ad apprendere come organizzare il proprio lavoro per il conseguimento di obiettivi, anteponendo alla sua realizzazione le fasi di analisi del problema, di modellizzazione e quindi di progettazione della soluzione. Organizzazione del corso: Lezioni sugli aspetti teorici; esercitazioni introduttive alla attività di laboratorio; per il laboratorio si prevede una attività basata sulla sperimentazione con dispositivi robotici reali, relativamente agli argomenti del corso (esempi di domini applicativi: navigazione indoor, Robocup). Prerequisiti: - fortemente consigliati: cibernetica (elementi di teoria dei sistemi), robotica (elementi), visione artificiale, ingegneria della conoscenza e sistemi esperti - consigliati: elaborazione delle immagini (elementi e complementi), intelligenza artificiale (elementi e complementi) Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://old.disco.unimib.it/robotica/

83

Sicurezza dei sistemi informatici Crediti: 6 Docente: C. Ferretti Descrizione e Programma del corso Obiettivi dell’insegnamento: La crescente complessità dei sistemi informatici rende sempre più difficile anticiparne i possibili malfunzionamenti, ma anche i possibili utilizzi non previsti dai progettisti, con il rischio di abusi e di possibili danni ad essi conseguenti. Il corso presenta l'eterogeneo insieme di conoscenze e strumenti necessari ad affrontare la varietà di rischi per la sicurezza dei sistemi informatici, approfondendo tecnicamente solo alcuni esempi concreti. Al termine lo studente è in grado di valutare correttamente l'impatto di ogni segnalazione di vulnerabilità, e di evitare, in caso di sviluppo di un programma, errori che permetterebbero successivi abusi. Programma: - Rischi nell'uso dei sistemi informativi, ruoli e competenze - Crittografia, errori di implementazione e attacchi - Concetti di sicurezza nei Sistemi Operativi e nelle strutture di rete - Buffer overflow: quando tale vulnerabilita' si manifesta e il suo utilizzo - Analisi di alcuni noti programmi che presentano vulnerabilita' - Programmi pericolosi: troiani, back-door, bombe logiche, virus, worm - Difese: Intrusion Detection System, attacchi di verifica, firewall Altre informazioni Per ulteriori informazioni sul corso si consulti il sito web: http://old.disco.unimib.it/ferretti

84

Sistemi di Data Warehouse Crediti: 6 Docente: (da definire) Descrizione e Programma del corso Obiettivi dell’insegnamento: Il corso fornisce gli strumenti necessari per la progettazione e la costruzione di un sistema di data warehouse per il supporto alle decisioni. Programma: - I Database analitici - L’architettura di un data warehouse - Relazioni tra infrastrutture e architetture - Il ciclo di vita di un sistema di supporto alle decisioni - Sviluppo di un data warehouse - La progettazione della base dati per un data warehouse - Accesso ai dati Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

85

Sistemi di Enterprise Resource Planning (ERP) Crediti: 6 Docente: (da definire) Descrizione e Programma del corso Conoscenze: L’obiettivo dell’insegnamento è quello di fornire conoscenze sui sistemi ERP e sulle principali architetture di software di tipo E.R.P. presenti sul mercato. Verranno quindi affrontati problemi di Production Planning e Operation Planning & Scheduling. Programma: - Introduzione generale ai sistemi ERP. - Introduzione alle principali architetture di sistemi ERP presenti sul mercato - Esempi di utilizzo di moduli ERP nella gestione di aziende operanti in diversi settori produttivi. - Production Planning, Operation Planning e Scheduling Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

86

Sistemi informativi (progettazione e organizzazione) Crediti: 6 Docente: C. Batini Descrizione e Programma del corso I sistemi informativi aziendali gestiscono tutte le informazioni (cartacee, o, sempre più spesso, elettroniche) scambiate in una organizzazione o tra organizzazioni per fornire servizi agli utenti esterni o far collaborare in modo efficace gli utenti interni. Un sistema informativo e’ fatto di persone, tecnologie, regole organizzative. Nel corso si analizza la struttura di un sistema informativo aziendale, e si forniscono le principali metodologie per la sua pianificazione, la valutazione, gli studi di fattibilità, la reingegnerizzazione dei processi. Le conoscenze acquisite riguardano il sistema informativo aziendale, i servizi che fornisce, il suo rapporto con la organizzazione e i processi aziendali. Come accade in molte scuole italiane e estere, circa metà del corso è dedicato a studi di caso. Programma 1. Cosa è un sistema informativo. Sistemi informativi, sistemi organizzativi e sistemi informatici Struttura di un sistema informativo ed esempi. Il ciclo di vita di una sistema informativo. 2. La qualità di un sistema informativo Le diverse tipologie di qualità di un sistema informativo: qualità dei processi, qualità dei servizi, qualità dei dati, qualità delle tecnologie. Assessment e benchmarking di sistemi informativi. Esempi e studi di caso. 3. Come si pianifica e progetta un sistema informativo La pianificazione di sistemi informativi, come strumento per definire i progetti e le priorità di intervento al fine di migliorare la qualità del sistema, e con il finanziamento disponibile. Gli studi di fattibilità, come strumento per definire le alternative di intervento e scegliere in base al miglior rapporto costi risultati. L’analisi dei costi e dei rischi di un sistema informativo. Esempi e studi di caso. 4. La reingegnerizzazione dei processi La reingegnerizzazione dei processi come strumento per il miglioramento dei processi aziendali tramite l’uso delle tecnologie della informazione. Esempi e studi di caso. Altre informazioni Per ulteriori informazioni sul corso rivolgersi direttamente al docente.

87

Visione Artificiale Crediti: 6 Docente: D. Sorrenti Descrizione e Programma del corso Abilità: Mediante il progetto lo studente apprende ad organizzare il proprio lavoro per raggiungere un obiettivo; attraverso la interazione con il docente viene portato a modellizzare il problema, a definire alcune ipotesi di soluzione, ad analizzarle e quindi a tradurle in una realizzazione. Programma La visione artificiale è una area rilevante per diversi settori, ad esempio la robotica industriale ed avanzata, il monitoraggio del traffico, le attività spaziali, etc. Il corso, dato il limitato tempo a disposizione, ha lo scopo di illustrare solo alcune tecniche base di visione artificiale. 1. formazione dell'immagine 2. cenni alle caratteristiche immagine più usate (argomenti approfonditi nei corsi di elaborazione delle immagini). 3. ricostruzione 3D con stereometria 4. stima del movimento (problema dell'apertura, flusso ottico, feature tracking) 5. cenni ai sistemi di visione omnidirezionale Organizzazione del corso: Il corso viene erogato nel primo semestre ed è organizzato con una serie di lezioni frontali ed alcune esercitazioni di laboratorio. Approfondimenti su tematiche coperte durante le lezioni ed esercitazioni o esposizione ad altre tematiche saranno possibili durante lo svolgimento del progetto. Prerequisiti: È suggerita una precedente esposizione alle seguenti tematiche: algebra delle matrici, calcolo delle probabilità e statistica, teoria dei sistemi, elaborazione delle immagini. Altre informazioni Testi consigliati: 1. D. A. Forsyth, J. Ponce, "Computer vision, a modern approach", Pearson Prentice-Hall, 2003 2. E. Trucco, A. Verri, "Introductory techniques for 3D computer vision", Prentice-Hall, 1998 3. O. Faugeras, "Three-dimensional computer vision", MIT Press, 1993 4. C. A. Poynton, "A technical introduction to digital video, Wiley, 1996 5. W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery, "Numerical recipes in C, the art of scientific programming", 2nd ed., Cambridge University Press, 1992 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 può vertere su tematiche non coperte nelle lezioni. Il voto complessivo è determinato come media pesata dei voti dell'orale (peso 0.3) e del progetto (peso 0.7). Il progetto può essere svolto congiuntamente per più corsi (ad esempio Laboratorio di progettazione, Sistemi in tempo reale, etc.). Per ulteriori informazioni sul corso si consulti il sito web: http://old.disco.unimib.it/visioneartificiale