Corso di Laurea Triennale in INFORMATICA Presidente: Elena Barcucci Dipartimento di Sistemi e Informatica Viale Morgagni 65 50134 – Firenze Segreteria: 055 4237437 Fax: 055 4237436 E-mail: [email protected] Portale informativo: http://if.dsi.unifi.it Finalità del Corso di Laurea L’obiettivo del corso di laurea è di creare specialisti in possesso innanzi tutto di una buona conoscenza di base degli strumenti, delle metodologie e dei fondamenti dell’Informatica; a questi si aggiunge, a seconda della scelta degli orientamenti e degli esami facoltativi, una maggiore competenza su alcune tematiche più specifiche, sia di carattere fondamentale sia applicativo. I laureati in Informatica dovranno avere una buona preparazione tecnica che consenta un rapido inserimento nel mondo del lavoro nel settore delle tecnologie dell’informazione e, nello stesso tempo, una preparazione culturale di base che permetta di affrontare con successo il progredire delle tecnologie, l’avanzamento della carriera verso ruoli di responsabilità e l’accesso ai livelli di studio universitari successivi. I laureati in Informatica devono pertanto: • possedere una buona base ed un ampio spettro di conoscenze e di competenze nei vari settori delle scienze dell'informazione; • avere capacità di affrontare e analizzare problemi e di sviluppare sistemi informatici per la loro soluzione; • avere familiarità con il metodo scientifico di indagine e saper comprendere e utilizzare gli strumenti matematici di supporto alle competenze informatiche; • essere in grado di utilizzare la lingua inglese, nell'ambito specifico di competenza e per lo scambio di informazioni generali; • essere capaci di lavorare in gruppo, di operare con definiti gradi di autonomia e di inserirsi prontamente negli ambienti di lavoro. Sbocchi Professionali I laureati in Informatica opereranno nell’ambito della progettazione, sviluppo e gestione di sistemi informatici, con riguardo ad una vasta gamma di domini di applicazione. Tali attività si svolgeranno in imprese produttrici nelle aree dei sistemi informatici e delle reti di calcolatori, nonché nelle imprese, nelle amministrazioni e nei laboratori che utilizzano sistemi informatici complessi. La formazione del laureato in Informatica è altresì mirata al suo inserimento, dopo ulteriori periodi di istruzione e di addestramento, in attività di ricerca scientifica e tecnologica a livello avanzato, ed in attività di insegnamento. Iscrizione al Corso e Prerequisiti Le conoscenze di base necessarie per un agevole accesso al corso sono di norma acquisite con un Diploma di Scuola Media Superiore. I corsi della classe richiedono attitudine agli studi di carattere scientifico; lo studente dovrebbe possedere una buona preparazione di base e soprattutto gradire lo studio delle materie di tipo logico-matematico. Lo studente deve essere in grado di comunicare correttamente in italiano scritto e parlato. A partire dal sito web del corso di laurea, sono reperibili un programma dettagliato ed un test di autovalutazione che consente agli studenti di determinare il livello della propria preparazione. È previsto un precorso (facoltativo) nel periodo dal 5 al 16 settembre 2005; il 20 settembre 2005 si terrà un test a risposta multipla (obbligatorio per tutti), per stabilire eventuali debiti formativi. Gli studenti con debiti formativi verranno affidati a tutor, compatibilmente con le risorse messe a disposizione dall'Ateneo. L'estinzione dei debiti formativi avverrà contestualmente all'esame di Analisi Matematica: Calcolo Differenziale. Organizzazione della Didattica La durata normale per il conseguimento della laurea è di tre anni. La didattica è organizzata in moduli ai quali sono associati Crediti Formativi Universitari (CFU) che gli studenti acquisiscono in funzione del lavoro svolto. La formazione dello studente prevede il conseguimento di 60 CFU/anno corrispondenti a 1440 ore di lavoro complessivo. Ad ogni unità didattica sono di norma assegnati 6 CFU e sono previste 48 ore di lezione (di cui 16 di esercitazione); per i corsi di laboratorio il rapporto tra le ore di lezione e le ore di esercitazione è invertito. Calendario Didattico L’anno accademico è suddiviso in due periodi didattici (semestri) di 12 settimane ciascuno; al termine del primo periodo è prevista un’interruzione di 8 settimane per permettere agli studenti di sostenere gli esami. I periodi didattici sono distribuiti nel corso dell’anno nel modo seguente: • • I semestre: dal 26 settembre 2005 al 23 dicembre 2005 II semestre: dal 13 febbraio 2006 al 19 maggio 2006 (vacanze Pasquali dal 13 aprile al 18 marzo compresi) Sono previsti i seguenti appelli di esame: I sessione (per i corsi tenuti nel primo semestre): I appello dal 9 al 20 gennaio 2006 II appello dal 23 gennaio 2006 al 9 febbraio 2006 II sessione: I appello dal 29 maggio 2006 al 17 giugno 2006 II appello dal 19 giugno 2006 al 7 luglio 2006 III sessione: I appello dal 10 al 21 luglio 2006 II appello dal 12 al 23 settembre 2006 IV sessione: I appello dall’8 al 19 gennaio 2007 II appello dal 22 gennaio 2007 al 9 febbraio 2007 Piani di Studio per gli immatricolati negli anni accademici 2004-2005 e 2005-2006 Il Corso di Laurea in Informatica fino all’anno accademico 2003-2004 era articolato in 5 orientamenti. A partire dall’anno accademico 2004-2005 tali orientamenti sono stati accorpati e il Corso di Laurea in Informatica è attualmente articolato in 2 orientamenti: 1. Informatica Generale 2. Applicazioni Scientifiche ed Economiche dell’Informatica In questa nuova organizzazione, gli insegnamenti dei primi due anni del corso di studio sono comuni a tutti gli orientamenti. Il terzo anno invece prevede insegnamenti comuni per 18 crediti, 18 crediti specifici per ciascun orientamento, 12 crediti a scelta libera dello studente e 12 crediti per la prova finale. La scelta dell’ orientamento avverrà al momento dell’iscrizione al terzo anno di corso. Per i due orientamenti sono previsti rispettivamente un minimo di 99 e 81 CFU nelle discipline del settore informatico, 33 CFU nelle discipline dei settori matematici e 6 CFU nelle discipline del settore fisico. Fra le attività formative nei diversi settori disciplinari saranno previste lezioni ed esercitazioni di laboratorio, attività progettuali autonome e attività individuali in laboratorio, per 21 CFU. Nel seguito sono riportati gli insegnamenti del I, II e del III anno comuni a tutti gli orientamenti (con indicazione dei CFU associati). I anno Algebra Lineare e Applicazioni Analisi Matematica: Calcolo Differenziale Analisi Matematica: Calcolo Integrale Architetture degli Elaboratori Laboratorio di Informatica: Architetture Laboratorio di Programmazione Matematica Discreta Matematica Discreta e Logica Programmazione CFU 6 6 6 6 3 6 6 3 6 Durante il primo anno di corso, sarà inoltre previsto l’accertamento della conoscenza della lingua inglese (fondamenti della lingua e inglese tecnico), per la quale vengono riconosciuti 6 CFU. II anno Algoritmi e Strutture Dati Basi di Dati e Sistemi Informativi Calcolo delle Probabilità e Statistica Calcolo Numerico Fisica Generale Laboratorio di Informatica: Algoritmi e Strutture Dati Laboratorio di Sistemi Informativi Linguaggi di Programmazione e Compilazione Metodologie di Programmazione Programmazione Concorrente Reti di Calcolatori Sistemi Operativi CFU 6 6 6 6 6 3 3 6 6 6 6 6 III anno Informatica e Gestione Aziendale Informatica Teorica: Linguaggi, Computabilità, Complessità Laboratorio di Informatica: Sistemi Operativi Laboratorio di Reti Tecniche di Comunicazione CFU 3 6 3 3 3 Di seguito sono infine riportati gli obiettivi formativi specifici e gli insegnamenti di ciascun orientamento. ORIENTAMENTO “INFORMATICA GENERALE” Obiettivo principale dell'orientamento è quello di creare specialisti in possesso di una buona conoscenza di base degli strumenti, delle metodologie e dei fondamenti dell’Informatica e che abbiano anche competenze su alcune tematiche più specifiche, sia di carattere fondamentale sia applicativo. In particolare si vuole dare una buona preparazione tecnica che consenta un rapido inserimento nel mondo del lavoro ed una preparazione culturale di base che permetta di affrontare il progredire delle tecnologie, l’avanzamento della carriera verso ruoli di responsabilità e l’accesso ai livelli di studio universitari successivi, in particolare alla laurea specialistica in Scienze e Tecnologie dell'Informazione che ne costituisce la naturale prosecuzione. L’orientamento mira a sviluppare la capacità di progettazione, sviluppo e gestione sia dei sistemi informatici sia delle reti di calcolatori. III anno, 3 esami a scelta tra Basi di Dati Distribuite Ingegneria del Software+Laboratorio Modellistica e Simulazione Organizzazione Informatica del Lavoro Paradigmi di Programmazione Programmazione di Reti Sicurezza delle Reti Sistemi concorrenti e distribuiti Strutture per basi di dati CFU 6 6 6 6 6 6 6 6 6 ORIENTAMENTO “APPLICAZIONI SCIENTIFICHE ED ECONOMICHE DELL’INFORMATICA” Obiettivo principale dell'orientamento è quello di formare degli esperti informatici con specifiche competenze nell'ambito del Calcolo Scientifico. I corsi che lo caratterizzano pertanto intendono fornire gli approfondimenti matematici e fisici e gli strumenti numerici necessari per la comprensione, la modellizzazione e la simulazione al calcolatore di importanti problemi teorici e applicativi comuni a svariati settori scientifici e tecnologici. L'orientamento intende impartire una preparazione tale da favorire l'inserimento di informatici in ambiti lavorativi che necessitano competenze scientifiche multidisciplinari, oltre che permettere l'accesso a livelli di studio universitari successivi e in particolare alla laurea specialistica in Scienze e Tecnologie dell'Informazione che ne costituisce la naturale prosecuzione. III anno, 3 esami a scelta tra Analisi Matematica II Elettronica I Elettronica II Fisica Generale II Geometria Computazionale Metodi di Approssimazione Metodi Matematici per la Finanza Metodi Numerici per l’Ottimizzazione Modelli e Calcoli per la Fisica CFU 6 6 6 6 6 6 6 6 6 Piani di Studio per gli immatricolati entro l’anno accademico 2003-2004 I 5 orientamenti previsti dal Corso di Laurea in Informatica fino all’anno accademico 2003-2004 erano i seguenti: 1. 2. 3. 4. 5. Sistemi Informativi e Trattamento delle Informazioni Linguaggi, Sistemi Distribuiti e Reti di Calcolatori Applicazioni Numeriche dell'Informatica Applicazioni dell'Informatica alla Fisica Scienze dell’Informazione Gli insegnamenti dei primi due anni del corso di studio erano comuni a tutti gli orientamenti, a meno di tre CFU di un laboratorio che serviva da presentazione per i differenti orientamenti. Il terzo anno invece prevedeva insegnamenti comuni per 18 CFU, 24 CFU specifici per ciascun orientamento, 9 CFU a scelta dello studente e 9 per la prova finale. Per gli studenti immatricolati entro il 2003-2004, nel seguito sono riportati gli insegnamenti del III anno comuni a tutti gli orientamenti (con indicazione dei CFU associati). III anno CFU Informatica e Gestione Aziendale Informatica Teorica Ingegneria del Software Laboratorio di Informatica: Ingegneria del Software Tecniche di Comunicazione 3 6 4 2 3 Di seguito sono infine riportati gli obiettivi formativi specifici e gli insegnamenti di ciascun orientamento. ORIENTAMENTO “SISTEMI INFORMATIVI E TRATTAMENTO DELLE INFORMAZIONI” Obiettivo principale dell'orientamento è quello di fornire le competenze e gli strumenti per lo sviluppo di applicazioni informatiche nelle aziende, curando sia gli aspetti algoritmici della risoluzione dei problemi, sia l'interazione dell'utente finale con i programmi applicativi. In particolare, si vuole arrivare ad impartire una solida conoscenza delle metodologie e delle tecniche per la realizzazione dei sistemi informativi aziendali e per l'interazione di questi con la rete (internet e intranet). III anno Basi di Dati Distribuite Interazione Uomo Macchina Organizzazione Informatica del Lavoro Strutture per Basi di Dati CFU 6 6 6 6 ORIENTAMENTO “LINGUAGGI, SISTEMI DISTRIBUITI E RETI DI CALCOLATORI” Obiettivo principale dell'orientamento è quello di formare una figura professionale che abbia le competenze necessarie per la progettazione e lo sviluppo di applicazioni e sistemi software distribuiti su reti di calcolatori e che fornisca il supporto per l'utilizzo, in diverse aree applicative, di tecnologie evolute basate su questi sistemi. Da un punto di vista metodologico, l'orientamento mira a sviluppare la capacità di progettare, realizzare ed utilizzare sistemi complessi distribuiti attraverso un processo di modellizzazione, di sviluppo e di verifica sperimentale. In particolare, si vuole arrivare ad impartire una solida conoscenza dei concetti di base sulle reti di calcolatori e sulle tecniche di programmazione in rete, delle tecniche di specifica, implementazione e verifica di sistemi distribuiti e concorrenti, e delle teorie, dei metodi e degli strumenti che rendano sicuro un sistema informatico distribuito. III anno Modellistica e Simulazione Programmazione di Reti Sicurezza delle Reti Sistemi Concorrenti e Distribuiti CFU 6 6 6 6 ORIENTAMENTO “APPLICAZIONI NUMERICHE DELL’INFORMATICA” Uno dei motivi più rilevanti che portarono, negli anni quaranta, alla costruzione del primo calcolatore elettronico e, quindi, alla nascita dell'Informatica, fu quello di soddisfare le esigenze del Calcolo Scientifico. Questa disciplina, di per sé molto vasta, oggi comprende lo studio, sviluppo ed utilizzo delle metodologie per varie applicazioni, tra cui si citano, ad esempio, la simulazione di sistemi complessi, sia per fini di indagine che di previsione, l'utilizzo ottimale delle risorse, la grafica su calcolatore ed il trattamento numerico dei segnali. L’orientamento ha l'obiettivo di fornire gli strumenti metodologici di base per le applicazioni su menzionate. III anno Analisi Matematica II Metodi di Approssimazione Metodi Matematici per la Finanza Metodi Numerici per l’Ottimizzazione CFU 6 6 6 6 ORIENTAMENTO “APPLICAZIONI DELL’INFORMATICA ALLA FISICA” L'uso del calcolatore ha profondamente cambiato l'approccio al mondo reale nei suoi diversi aspetti (misura, analisi, modellazione, simulazione e controllo) ed ha portato a nuovi approcci e metodologie per la soluzione di problemi reali. Questo orientamento si propone di fornire la base di queste metodologie aggiungendo alla conoscenza degli strumenti informatici alcuni elementi tradizionali di formazione del fisico. L’orientamento garantisce l'acquisizione di conoscenze che permettono di utilizzare il calcolatore sia come interfaccia con la strumentazione sia come strumento di simulazione e controllo. Particolare attenzione sarà data alle metodologie numeriche di sviluppo più recenti quali le tecniche statistiche, gli approcci non-deterministici e la trattazione della complessità. Verrà anche affrontato l'aspetto più tradizionale dell'analisi matematica e dell’equazioni differenziali che rimangono l'elemento fondante della cultura scientifica ed ingegneristica e dell’impostazione quantitativa dell'analisi dei problemi. III anno CFU Elettronica Elettronica II oppure Analisi Matematica II Fisica Generale II Modelli e Calcoli per la Fisica 6 6 6 6 ORIENTAMENTO “SCIENZE DELL’INFORMAZIONE” Questo orientamento è particolarmente rivolto a coloro che intendono continuare il loro corso di studi con la laurea specialistica. Pertanto l’obiettivo specifico è quello di fornire una visione per quanto possibile ampia delle problematiche delle scienze dell’informazione e le basi teoriche e metodologiche per affrontare gli insegnamenti dei successivi due anni di specializzazione. III anno CFU Algoritmi e Strutture Dati II Analisi Matematica II oppure Geometria Computazionale Fisica Generale II Modellistica e Simulazione 6 6 6 6 ATTIVITÀ COMPLEMENTARI Per quanto riguarda le attività autonomamente scelte, lo studente può inserire nel proprio piano di studi attività di norma corrispondenti a corsi universitari previsti nell'Università di Firenze. Eventuali CFU acquisiti presso altre istituzioni universitarie italiane, dell'Unione Europea o di altri paesi potranno essere riconosciuti in base alla documentazione prodotta dallo studente ovvero in base ad accordi bilaterali preventivamente stipulati. Potranno essere riconosciuti anche CFU acquisiti in istituzioni non universitarie utilizzando sistemi di trasferimento di CFU riconosciuti dall'Università di Firenze. Il Corso di Laurea in Informatica metterà a disposizione degli studenti i seguenti corsi complementari: Corsi complementari CFU Metodi Formali per l'Analisi degli Algoritmi Ricerca Operativa Semantica della Concorrenza Semantica dei Linguaggi di Programmazione Tecniche di Programmazione 6 6 6 6 6 Alla prova finale ed al possibile stage esterno sono riservati complessivamente 9 CFU. Entro il mese di dicembre lo studente può presentare la richiesta di accreditamento di altre attività non previste dal presente regolamento e opportunamente certificate, che rispecchino il raggiungimento degli stessi obiettivi formativi del corso di studi. La conformità viene riconosciuta dal competente Consiglio del Corso di Laurea e trasmessa alla segreteria studenti. Il giudizio di non conformità è emesso negli stessi termini. Propedeuticità È fortemente consigliato sostenere gli esami nello stesso ordine in cui sono tenuti i corsi corrispondenti, in particolar modo per i corsi dei primi due anni. Frequenza Per poter trarre pieno vantaggio dall’organizzazione didattica in semestri è importante che lo studente affronti i corsi con assiduità e impegno: dunque, la frequenza ai corsi è fortemente consigliata. La frequenza ai corsi di laboratorio, per la loro natura pratica e applicativa, è obbligatoria e sarà certificata solo a seguito della presenza ad almeno il 75% delle attività didattiche. Sono previste agevolazioni per gli studenti lavoratori. Verifiche di Profitto La verifica del profitto individuale raggiunto dallo studente e il conseguente riconoscimento dei CFU maturati nelle varie attività formative sono effettuati tramite esami scritti e/o orali e/o progetti da eseguire in laboratorio. Per i corsi di laboratorio sono previste valutazioni in itinere che contribuiranno alla formazione del voto dell’insegnamento con essi correlato. La prova di conoscenza della lingua inglese è effettuata tramite due test di valutazione da effettuarsi presso il Centro Linguistico d’Ateneo. La votazione è espressa in trentesimi per gli esami e in centodecimi per la prova finale, con eventuale lode. L’esito della valutazione si considera positivo, ai fini dell’attribuzione dei CFU, se si ottiene il punteggio di almeno 18/30. Il punteggio minimo per il superamento della prova finale è 66/110. Trasferimenti Nei trasferimenti fra corsi di studio dell’Università di Firenze appartenenti alla stessa classe, i CFU conseguiti nella formazione di base sono riconosciuti integralmente, mentre i CFU conseguiti nella formazione caratterizzante sono riconosciuti dopo approvazione del Consiglio del Corso di Laurea. Prova Finale Per essere ammessi alla prova finale occorre avere conseguito tutti i CFU nelle attività formative previste dal piano di studi. Le attività formative relative alla preparazione della prova finale per il conseguimento del titolo consistono nello svolgimento di un progetto documentato con un elaborato scritto sotto la supervisione di un membro del Consiglio del Corso di Laurea. È prevista una discussione pubblica sull’elaborato risultato del progetto finale e, durante tale discussione, saranno fatte anche domande di carattere generale. Un apposito regolamento, definito dal Consiglio del Corso di Laurea, specifica il ruolo del supervisore e le modalità di valutazione della tesi e del curriculum. Potrà essere svolto uno stage presso un'azienda o un ente esterno secondo modalità stabilite annualmente dalle strutture didattiche. Tale attività dovrà essere seguita da un membro del Consiglio del Corso di Laurea, in qualità di responsabile scientifico, e da un tutore interno all'azienda o all'ente esterno che sia responsabile della parte esecutiva. Norme Transitorie Gli studenti iscritti presso l’Università di Firenze a corsi di laurea o diplomi universitari, del previgente ordinamento didattico, che intendono iscriversi al presente corso di studi potranno ottenere le convalide degli esami sostenuti dopo approvazione del Consiglio del Corso di Laurea. Per gli studenti provenienti dai previgenti corsi di laurea e diploma universitario in Informatica dell’Università di Firenze è stata predisposta una tabella di corrispondenze che, sostanzialmente, consente di riconoscere come CFU per la nuova laurea in Informatica tutti gli esami superati. Altri casi diversi da quelli previsti dovranno essere valutati individualmente dal competente Consiglio del Corso di Laurea. Per gli studenti provenienti da altre università sono consentite abbreviazioni di corso previa valutazione del curriculum individuale da parte del Consiglio del Corso di Laurea. Programmi dei Corsi Algebra Lineare e Applicazioni (E. Rubei) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le conoscenze dei concetti fondamentali dell'algebra lineare, cominciando dal linguaggio delle matrici, importante per tutto il percorso successivo di studi. PROGRAMMA. Vettori, matrici e operazioni su essi. Matrici invertibili. Cenni sugli spazi vettoriali. Dimensione. Funzioni lineari. Rango di una matrice. Sistemi lineari e algoritmo di Gauss. Basi ortonormali e algoritmo di Gram-Schmidt. Determinante: aspetti ricorsivi e proprietà principali. Autovalori e autovettori, teorema spettrale. Forme quadratiche. Cenni sulla geometria del piano e dello spazio. Algoritmi e Strutture Dati (M. C. Verri) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie a comprendere le diverse problematiche di progettazione e valutazione degli algoritmi, con particolare riferimento agli algoritmi non numerici che operano su memoria centrale. PROGRAMMA. Strutture dati astratte (lista, pila, coda, albero). Strutture dati interne: elementari, sequenziali, concatenate. Algoritmi di ricerca: sequenziale, binaria, alberi binari di ricerca, alberi 23. Ricerca digitale, ricerca casuale (hashing). Algoritmi di ordinamento: per selezione, per inserzione, bubble sort, counting sort. Quicksort, Heapsort, Mergesort. Per tutti gli algoritmi presentati viene data una valutazione della complessità e dei criteri generali sulla loro applicazione. Algoritmi e Strutture Dati II (M. C. Verri) OBIETTIVI FORMATIVI. Il corso fornisce una panoramica dei più importanti algoritmi di livello avanzato e delle principali tecniche algoritmiche. Più precisamente vengono esaminate le tecniche di programmazione dinamica, le tecniche greedy e gli algoritmi union-find relativamente a problemi concernenti la ricerca nelle sue forme più evolute, la compressione dei dati ed i grafi. PROGRAMMA. Algoritmi di ricerca su stringhe. Algoritmi di compressione dati. Algoritmi unionfind. Programmazione dinamica. Algoritmi greedy. Grafi. Visita di grafi. Connettività. Grafi pesati. Minimum spanning tree. Flusso massimo. Matrimoni stabili. Analisi Matematica II (V. Vespri) OBIETTIVI FORMATIVI. Dare la conoscenza di strumenti matematici avanzati. Risolvere equazioni differenziali ordinarie e alle derivate parziali. PROGRAMMA. Equazioni differenziali lineari. Curve e superfici. Serie di Fourier. Risoluzioni di PDE a coefficienti costanti. Integrali multipli. Teorema del Dini Analisi Matematica: Calcolo Differenziale (G. Paoli) OBIETTIVI FORMATIVI. Il corso si propone di fornire agli studenti le nozioni di base del calcolo differenziale (limiti, derivate, formula di Taylor) e delle loro applicazioni (principalmente allo studio di funzioni di una variabile reale). Obiettivo minimo del corso è quello di permettere allo studente di completare correttamente lo studio di una funzione di una variabile reale. PROGRAMMA. Limiti di funzioni e di successioni. Derivate e regole di derivazione. Formula di Taylor. Applicazioni. Analisi Matematica: Calcolo Integrale (R. Magnanini) OBIETTIVI FORMATIVI. Il corso si propone di fornire allo studente le nozioni di base sull’integrale di Riemann e le sue applicazioni al calcolo di aree e volumi ed alle equazioni differenziali ordinarie. Una parte del corso sarà dedicata alle serie numeriche. Obiettivo minimo del corso sarà quello di far sì che lo studente comprenda correttamente l’importanza del teorema fondamentale del calcolo. PROGRAMMA. Integrale di Riemann. Primitive. Calcolo di primitive. Calcolo di aree e di volumi. Serie numeriche. Equazioni differenziali di facile risoluzione. Architettura degli Elaboratori (A. Bondavalli) OBIETTIVI FORMATIVI. Il corso intende fornire gli elementi di base per comprendere l'architettura dei calcolatori e l'interfaccia tra quest'ultima ed i livelli di astrazione superiori di un sistema di calcolo. Come risultato, gli studenti impareranno il perchè della progettazione degli elaboratori, in particolare i principi su cui si basa la progettazione dei moderni processori. PROGRAMMA. I moderni elaboratori e l'evoluzione tecnologica. Il ruolo delle prestazioni. Introduzione ai linguaggi assembler. Reti logiche combinatorie e sequenziali. Concetti fondamentali di rappresentazione dei numeri e aritmetica binaria. Il progetto di una ALU. Moltiplicazione e divisione. Numeri in virgola mobile. Progetto della CPU a ciclo singolo: il cammino dei dati ed il controllo. Progetto della CPU a cicli multipli: il cammino dei dati ed il controllo. Eccezioni. Cenni sul pipelining. Basi di Dati e Sistemi Informativi (F. Cesarini) OBIETTIVI FORMATIVI. Il corso è focalizzato sulle basi di dati di tipo relazionale; esse oltre ad essere le più utilizzate, sono anche di primaria importanza per la definizione di concetti e metodologie ulteriormente sviluppate in successive proposte. In particolare il corso si propone di fornire allo studente le nozioni fondamentali per la progettazione e analisi di una base di dati relazionale e per l’utilizzo della stessa con metodologie standard. PROGRAMMA. Architettura dei sistemi per la gestione di basi di dati. Modelli dei dati. Il modello Entity Relationship. Il modello relazionale. Algebra relazionale: operatori e query. Analisi e trasformazione di uno schema ER in uno schema relazionale. Dipendenze funzionali, forme normali, decomposizione di schemi. Introduzione al linguaggio SQL. Basi di Dati Distribuite (F. Cesarini) OBIETTIVI FORMATIVI. In questo corso saranno trattati argomenti relativi alle principali tendenze di sviluppo della tecnologia delle basi di dati. PROGRAMMA. Saranno illustrate le tecniche di interazione tra i sistemi per la gestione di basi di dati e le reti di calcolatori e le problematiche concernenti lo sviluppo di nuovi modelli e di nuove funzionalità relative all’integrazione in Internet. Saranno anche trattate tecniche per la gestione integrata di informazioni solo parzialmente strutturate. Calcolo delle Probabilità e Statistica (L. Vannucci) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti i concetti, i metodi e i modelli necessari per misurare l'incertezza con riferimento a eventi e a numeri. Particolare attenzione sarà riservata alle esemplificazioni e alle applicazioni, con particolare riguardo a quelle statistiche. PROGRAMMA. Rappresentazione dell'incertezza su eventi. Calcolo combinatorio. Classi di eventi probabilizzabili nelle varie concezioni. Alcuni risultati per la valutazione delle probabilità di eventi. Alcuni schemi di valutazione per le probabilità di eventi. Eventi limite e probabilità 0-1. Determinazioni possibili e distribuzioni di probabilità di una variabile aleatoria. Indicatori sintetici associati a distribuzioni. Funzioni trasformate. Alcune distribuzioni notevoli. Disuguaglianze stocastiche. Distribuzioni a più dimensioni e loro indicatori di sintesi. Il problema della regressione lineare e non lineare. Variabili funzioni di variabili aleatorie. Successioni di variabili aleatorie e vari tipi di convergenza stocastica: leggi dei grandi numeri, teorema centrale del limite. Statistica descrittiva. Statistica inferenziale: stimatori puntuali e intervallari, test di ipotesi, approccio decisionale. Calcolo Numerico (L. Brugnano) OBIETTIVI FORMATIVI. Molte problematiche applicative sono formalizzate mediante un modello matematico del problema. Al fine di rendere fruibile il contenuto informativo del modello stesso, è spesso necessario risolvere le equazioni coinvolte. Le metodologie intese ad ottenere questo scopo sono denominate metodi numerici ed il corso tratta quelli di utilizzo più comune. Il corso di Calcolo Numerico si prefigura, pertanto, come un corso di base di calcolo scientifico. PROGRAMMA. Errori ed aritmetica finita. Condizionamento di un problema. Zeri di funzioni di una variabile. Sistemi lineari: fattorizzazione LU, pivoting, fattorizzazione QR e sistemi sovradeterminati. Approssimazione di funzioni: interpolazione polinomiale; funzioni spline. Approssimazione di integrali definiti: formule di quadratura di Newton-Cotes e formule adattative. Elettronica (M. Bini) OBIETTIVI FORMATIVI. Il corso intende dare una conoscenza di base dei componenti utilizzati nella microelettronica, mettendo in rilievo i fenomeni fisici che ne determinano il funzionamento, nonché le applicazioni sopratutto ai circuiti digitali. Lo studente sarà guidato a comprendere e quindi valutare le specifiche tecniche dei circuiti impiegati nell'hardware dei calcolatori. PROGRAMMA. Fisica dei semiconduttori. Giunzione "pn" e diodo. Transistori ad effetto di campo (JFET). Capacità Metallo Ossido Semiconduttore (MOS). Transistori MOSFET: caratteristiche di ingresso e di uscita, MOSFET di tipo N (NMOS) e di tipo P (PMOS), MOSFET complementari (CMOS). Famiglie logiche a NMOS e CMOS: invertitore, circuiti NOR, NAND e per funzioni logiche più complesse. Tecniche di progettazione. Circuiti combinatori: memorie ROM e Array logici programmabili (PLA). Circuiti sequenziali: Latch, flip-flop, shift register, contatori. Memorie ad accesso diretto (RAM) a 6 e 4 transistori. Memoria RAM ad un transistore. Elettronica II (G. Pasquali) OBIETTIVI FORMATIVI. Il corso, facendo conto su quanto appreso dallo studente nel corso di Elettronica, presenta lo sviluppo della microelettronica nel campo dei microprocessori. Alcune applicazioni aiutano lo studente a capire le problematiche connesse alla realizzazione di microcomputer, compreso il funzionamento e l'impiego dei bus più utilizzati. PROGRAMMA. Microprocessori: organizzazione interna (registri, unità di calcolo e di controllo), segnali essenziali per il funzionamento, circuiti di ingresso/uscita per i segnali. Circuito "threestate" e circuito "totem pole". Impiego del microprocessore nei controlli di processo: modello di programmazione, gestione dell'"interrupt". Microprocessori Intel, Motorola: set di istruzioni, gestione dell'"input/output". Utilizzo del Programmable Interrupt Controller. Architettura di un PC. Alcuni bus (XT, ISA. PCI, VME). Cenni sui DSP (Digital Signal Processors). Fisica Generale (M. Rosa Clot) OBIETTIVI FORMATIVI. Il corso di Fisica Generale si propone di dare una formazione di base di fisica limitatamente alla meccanica e alla termodinamica. Il corso non richiede particolari strumenti matematici ma pone l'accento sugli aspetti quantitativi e osservativi: ordini di grandezza, fenomenologia. PROGRAMMA. Unità di misura e ordini di grandezza. Dinamica del punto: problemi uni- e bidimensionali. Gravitazione universale e leggi di Keplero. Lavoro ed Energia. Impulso e quantità di moto. Termometria e calorimetria. I modelli: gas perfetti e gas reali. Primo principio della termodinamica. Secondo principio. Ciclo di Carnot. Entropia. Relazione tra entropia e probabilità. Fisica Generale II (M. Rosa Clot) OBIETTIVI FORMATIVI. Il corso di Fisica II riprende il programma di fisica Generale ampliando alcune parti teoriche ma sopratutto approfondendo gli aspetti quantitativi mediante le tecniche di simulazione numerica. PROGRAMMA. Modelli, simulazione ed esperimenti in meccanica e termodinamica. 1) Modelli unidimensionali di meccanica del punto in una dimensione. 2) Modelli di Meccanica del punto in due dimensioni. 3) Elementi di statistica: Metodo di MonteCarlo, Teoria cinetica dei gas, Distribuzione di Boltzmann. 4) Analisi di un segnale: analisi di fourier, acquisizione di segnali, rumore, entropia. Geometria Computazionale (V. Ancona) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le conoscenze e le competenze per trattare problemi di calcolo simbolico polinomiale e le loro applicazioni geometriche. PROGRAMMA. I polinomi in più variabili. Ideali. L'algoritmo di divisione in una e più variabili. Ordini monomiali. Le basi di Grobner. L'algoritmo di Buchberger. Algoritmo di appartenenza ad un ideale. Il teorema di eliminazione e le sue applicazioni. Il risultante. Parametrizzazioni e equazioni implicite. Esempi di curve e superfici nello spazio. Cenni sulla teoria della dimensione. Informatica e Gestione Aziendale (D. De Luca Cardillo) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti strumenti teorici(modelli matematici) e pratici (applicazioni a particolari situazioni) di gestione d’azienda con particolare focalizzazione sull’uso di modelli di ordinamento e tempificazione e sui loro possibili usi. PROGRAMMA. Management d’azienda e possibili strutture organizzative. Teoria dello scheduling. Collegamenti a classici problemi(Commesso Viaggiatore, Zaino),Tecnica Branch and Bound applicata al problema di n lavori su 1 macchina. Seminari su: Public Speaking, Come si costruisce un curriculum(seminari). Il programma potrà essere modificato in base a particolari esigenze didattiche riscontrate. Informatica Teorica: Linguaggi, Computabilità, Complessità (P. Crescenzi) OBIETTIVI FORMATIVI. Scopo del corso è fornire gli elementi di base delle teorie che sono di fondamento teorico all'informatica. In particolare, i concetti di linguaggio e di automa, di decidibilità e di complessità. PROGRAMMA. I linguaggi e la classificazione di Chomski. Macchine di Turing. Teoria della computabilità e tesi di Church. Funzioni ricorsive e parzialmente ricorsive. Decidibilità e indecidibilità. Teoria della complessità: problemi trattabili e intrattabili. Le classi P ed NP. La NPcompletezza. Algoritmi di approssimazione. Ingegneria del Software OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie a comprendere le diverse problematiche nella progettazione, realizzazione e manutenzione di sistemi software. PROGRAMMA. Definizione dell'Ingegneria del Software. Il software: da arte ad attività industriale. Il processo di sviluppo software. I fattori di qualità e i principi dell'Ingegneria del Software. Modelli di ciclo di vita a cascata, modelli evolutivi del ciclo di vita. Ingegneria dei requisiti. Analisi e specifica dei requisiti: specifiche operazionali e descrittive; linguaggi e modelli di specifica semiformale; linguaggi e modelli di specifica formale, verifica formale. La progettazione: modularizzazione, information hiding, tecniche top-down, tecniche bottom-up, tecniche orientate ad oggetti. Architetture software, UML. Convalida e verifica: analisi statica, analisi dinamica. Pianificazione, controllo e gestione del processo di sviluppo. Metriche del software. Stima dei costi. Gestione delle configurazioni. Interazione Uomo Macchina (M.C. Verri) OBIETTIVI FORMATIVI. Il corso intende far riflettere sulle problematiche che si presentano nella costruzione e nell’uso di interfacce e fornire gli strumenti per una loro valutazione. Il corso si avvarrà di seminari di approfondimento. PROGRAMMA. Principi: definizione di HCI e del suo dominio disciplinare; evoluzione, stato dell’arte e prospettive future; cenni di psicologia cognitiva; il Model Human Processor (canali di I/O, memoria, ragionamento). Modelli dell’utente: modelli di interazione (GOMS, il modello Esecuzione-Valutazione di Norman, il modello di Abowd e Beale). Interazione: stili di interazione, strumenti di interazione, evoluzione dei paradigmi di interazione, usabilità, sviluppo di interfacce (processo di sviluppo, User Centred Design). Tecniche di valutazione: stili di valutazione (valutazione senza l’utente, valutazione con l’utente), valutazione del progetto, valutazione della realizzazione. Sviluppo e valutazione sul Web. Laboratorio di Informatica: Algoritmi e Strutture Dati (P. Crescenzi) OBIETTIVI FORMATIVI. Il corso intende preparare gli studenti alla corretta implementazione ed al corretto uso delle strutture dati. Allo scopo saranno studiate le principali strutture dati e gli algoritmi più diffusi. PROGRAMMA. Interpretazione delle principali strutture dati tramite il linguaggio Java. Implementazione delle principali strutture dati e dei più comuni algoritmi che di esse fanno uso. Laboratorio di Informatica: Architettura degli Elaboratori (M. Boreale) OBIETTIVI FORMATIVI. Attraverso l'insegnamento di un linguaggio assembler (MIPS) il laboratorio intende fornire gli elementi per comprendere i linguaggi assembler e l'interfaccia che essi costituiscono fra l'architettura hardware ed i livelli di astrazione superiori di un sistema di calcolo. Come risultato, gli studenti impareranno a programmare in un linguaggio assembler con i vincoli che esso pone relativamente alla conoscenza del processore. PROGRAMMA. Introduzione ai linguaggi assembler. Il linguaggio MIPS. Il simulatore Spim. Esercitazioni in laboratorio. Laboratorio di Informatica: Ingegneria del Software PROGRAMMA. Strumenti ed ambienti per l’ingegneria del software. Strumenti tradizionali per la programmazione "in piccolo". Strumenti "CASE". Strumenti per il testing e la verifica. Ambienti di sviluppo integrati. Laboratorio di Programmazione (G. Aguzzi , Prof. E. Barcucci) OBIETTIVI FORMATIVI. Il corso intende insegnare agli studenti il linguaggio di programmazione Java e, in generale, i concetti fondamentali della programmazione. PROGRAMMA. Introduzione alla programmazione. Tipi primitivi. Controllo del flusso. Metodi, programmazione procedurale e ricorsione. Programmazione orientata agli oggetti. Informazioni strutturate. Laboratorio di Sistemi Informativi (D. Merlini) OBIETTIVI FORMATIVI. Il corso intende far sperimentare agli studenti le varie fasi di sviluppo di una base di dati utilizzando MySQL come sistema per la gestione di basi di dati. PROGRAMMA. Creazione di basi di dati e tabelle in MySQL. Vincoli intrarelazionali e interrelazionali. Integrità referenziale. Modifica degli schemi. Inserimento, cancellazione e modifica dei dati. Importazione ed esportazione di dati. Query su una sola tabella: il comando SELECT e le clausole WHERE, GROUP BY, HAVING, ORDERD BY, LIMIT. Query su più tabelle: join implicito ed esplicito, operazioni insiemistiche e query annidate. Funzioni built in. Tipi di indici e tabelle. Aspetti avanzati di MySQL. Esercitazioni in laboratorio. Linguaggi di Programmazione e Compilazione (E. Barcucci) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie per comprendere ed affrontare le diverse problematiche relative ai linguaggi formali ed alle diverse fasi della compilazione con particolare attenzione all’analisi lessicale, sintattica e semantica PROGRAMMA DEL CORSO: Struttura del compilatore. Grammatiche; proprietà; gerarchia di Chomsky. Espressioni regolari; automi a stati finiti deterministici e non; eliminazione del non determinismo; minimizzazione di automi; relazioni fra automi, espressioni e grammatiche. Analisi lessicale e schema di un analizzatore. Analisi sintattica; grammatiche context free; trasformazione di grammatiche. Analisi top down; tabelle per l'analisi top down; grammatiche LL(1); analisi in discesa ricorsiva. Analisi bottom up; costruzione delle tabelle SLR(1), LR(1) e LALR(1); trattamento degli errori nell'analisi sintattica. Grammatiche ad attributi; analisi top down con attributi di tipo S o L; analisi LR con attributi di tipo S o L. Tabella dei simboli. Analisi semantica; obiettivi e strutture dati; analisi semantica delle dichiarazioni. Lingua Inglese OBIETTIVI FORMATIVI. Verifica delle capacità di comprensione dell'inglese scritto e parlato equivalenti a quelle acquisite con una buona preparazione di inglese nella scuola secondaria. Ulteriore verifica delle capacità di comprensione dell'inglese scritto nell'area scientificotecnologica. Matematica Discreta (A. Marcja) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti alcune basi matematiche necessarie alle nuove tecnologie. PROGRAMMA. Insiemi e loro operazioni: insiemi, corrispondenze e applicazioni. Cardinalità. Operazioni su un insieme. Il numero di sottoinsiemi di un insieme finito. Stringhe. Permutazioni di un insieme. Induzione su N.Il numero dei sottoinsiemi ordinati. Il teorema binomiale. Distribuzioni. Interi, divisori e primi. Massimo Comun Divisore. Relazioni su un insieme: proprietà. Chiusure di relazioni. Relazioni di equivalenza. Classi di resto: congruenze. Criteri di divisibilità. Elementi invertibili. Relazioni di ordine: ordine parziale. Sottoinsiemi ordinati. Reticoli. Grafi. Isomorfismo di grafi. Grafi semplici. Sottografi e grafi ridotti. Grado di un vertice. Cammini. Grafi connessi. Un esempio storico: il problema dei sette ponti. Alberi: alberi liberi e alberi. Alberi di decisione: codici di Huffman. Matematica Discreta e Logica (F. Lacava) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie per comprendere i linguaggi formali e i metodi di ragionamento. PROGRAMMA. Logica proposizionale: alfabeto, parole e formule.Valutazioni e formule soddisfacibili. Tavole di verità. Metodo di risoluzione. Logica dei predicati del primo ordine: tipo, alfabeto, termini e formule. Interpretazione, valutazione e modelli. Modelli di Herbrand. Algoritmo di unificazione. Metodi di Approssimazione (D. Trigiante) OBIETTIVI FORMATIVI. Fornire le conoscenze essenziali di sistemi dinamici lineari continui e discreti necessarie per lo studio e la simulazione numerica di modelli matematici descriventi problematiche tratte da varie applicazioni; studio di algoritmi e di metodi adeguati per la discretizzazione di problemi continui; simulazione sul calcolatore di modelli lineari. PROGRAMMA. Preliminari sulle equazioni alle differenze. Equazioni alle differenze e differenziali lineari a coefficienti constanti. Stabilità delle soluzioni. Alcuni modelli discreti di economia. Metodi multistep per equazioni differenziali. Problemi stiff e regioni di assoluta stabilità dei metodi. Analisi di stabilità lineare per sistemi continui e discreti mediante studio di funzioni di matrici. Alcuni modelli di dinamica delle popolazioni. Matrici positive, teorema di PerronFrobenius e sue applicazioni ad alcuni modelli. Metodi Formali per l'Analisi degli Algoritmi (D. Merlini) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti una descrizione completa delle principali tecniche matematiche utilizzate nell’analisi degli algoritmi. Vengono trattati argomenti matematici classici, come la matematica discreta e l’analisi combinatoria, così come argomenti di informatica che includono gli algoritmi e le strutture dati. Il corso è integrato con la presentazione di un sistema di manipolazione simbolica che viene utilizzato come strumento per l’approfondimento e la verifica degli argomenti trattati. PROGRAMMA. Analisi degli algoritmi e complessità computazionale. Caso medio e caso pessimo. Relazioni di ricorrenza: metodi di risoluzione. Divide et impera. Funzioni generatrici ed estrazione dei loro coefficienti. Il metodo simbolico. Epressioni regolari e grammatiche context-free: la metodologia di Chomsky-Schutzenberger. L'inversione di Lagrange. Metodi esatti e metodi approssimati. Esempi di analisi di algoritmi classici, sugli alberi, sulle permutazioni e sulle parole Metodi Matematici per la Finanza (V. Vespri) OBIETTIVI FORMATIVI. Dare le conoscenze di base della finanza matematica e le nozioni e la nomenclatura fondamentale. PROGRAMMA. Le opzioni e i titoli derivati. Il problema del prezzo giusto. Ottimizzazione lineare. Prime nozioni di calcolo stocastico. Metodi Numerici per l’Ottimizzazione (L. Brugnano) OBIETTIVI FORMATIVI. Le strategie ottimali per la risoluzione di molti problemi applicativi sono ottenibili come soluzione ottima di un corrispondente problema matematico (problema di ottimo). Il corso è inteso a fornire conoscenze specifiche riguardo ai metodi numerici per la risoluzione di problemi di ottimo. PROGRAMMA. Problemi di ottimizzazione non vincolata: generalità, metodi iterativi di discesa, metodi quasi-Newtoniani, metodi “trust region”. Problemi di ottimizzazione vincolata: condizioni di Kuhn-Tucker, metodi a punti interni in Programmazione Lineare, programmazione quadratica; metodi primali: generalità, metodo del gradiente proiettato; metodi di penalità. Metodologie di Programmazione (B. Venneri) OBIETTIVI FORMATIVI. Presentare i principi, le tecniche e le metodologie per lo sviluppo e la realizzazione di sistemi software, basati sulla tecnologia “orientata agli oggetti”. Come risultato, gli studenti dovranno acquisire la padronanza della metodologia orientata agli oggetti sia come strumento di disegno e progettazione che come paradigma di programmazione realizzato nei linguaggi C++ e Java. PROGRAMMA. Modularizzazione per riusabilità e estendibilità; l’astrazione sui dati. La nozione di classe, l’astrazione per interfacce, le relazione fra classi: ereditarietà e clientela, aggregazione e composizione, ereditarietà multipla. Il modello degli oggetti e il binding dinamico dei metodi. Il formalismo U.M.L. Patterns design e Framework. Linguaggio utilizzato: JAVA. Modelli e Calcoli per la Fisica (G. Landi) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti una conoscenza sufficientemente approfondita di tecniche di calcolo avanzate, in uso in moltissime analisi di dati di esperimenti di fisica. Tali metodi sono modellati sul paradigma delle "reti neurali", e tentano di riprodurre alcuni aspetti delle capacità del cervello animale e della sua grande potenza di riconoscimento di aggregati di segnali ("pattern recognition"). Il corso affronterà anche i modelli più avanzati che sono stati proposti per interpetrare la complessità del problema. PROGRAMMA. Cenni alla dinamica dei neuroni del cervello animale. Perceptron. Classificatore ottimale di Bayes. Multilayer Perceptron.Vari metodi di apprendimento del M. P., Backpropagation e metodi del secondo ordine. Radial Basis Functions. Funzioni di Green. Clustering e funzioni radiali a scale multiple. Analisi di "Pattern" Temporali. Filtri di Widrow-Hoff e loro apprendimento. Esempi di applicazioni classiche: ARMA. DARMA. Problemi di controllo nonlineare. NETtalk. Modello di Kohonen. Principal Component Analysis. Metodi di Meccanica Statistica: modello di Hopfield e reti neurali ricorsive. Elementi di Meccanica Statistica. Vetri di Spin: isomorfismo con il Modello di Hopfield. Modello di Sherrington-Kirkpatrick. Simmetria di Replica. Soluzione di Parisi (Replica Symmetry Breaking). Ultrametricità e reti neurali; organizzazione gerarchica in un sistema disordinato. Ottimizzazione: Simulated Annealing e metodi Monte Carlo. Condizioni di ergodicità. Toolbox di MATLAB neural-networks. Modellistica e Simulazione (A. Bondavalli) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie a comprendere gli aspetti di analisi quantitativa e di qualità del servizio offerto da sistemi di elaborazione, con particolare enfasi sull'analisi delle prestazioni ed affidabilità. Come risultato, gli studenti impareranno il significato della analisi quantitativa di sistemi di elaborazione ed i principi e alcune tecniche di modellizzazione e valutazione. PROGRAMMA. Concetti di prestazioni ed affidabilità dei sistemi e validazione. Definizione di indici di prestazione ed affidabilità. Regole di costruzione e validazione dei modelli. Richiami di probabilità. Metodi combinatorii. I processi di Markov a tempo discreto. I processi di Markov a tempo continuo. Teoria delle code: la coda MM1 e sue varianti. Reti di Petri stocastiche. Formalismi di modellizzazione e strumenti automatici di supporto: SAN e UltraSan, DSPN e DEEM. Organizzazione Informatica del Lavoro OBIETTIVI FORMATIVI. Nel corso vengono presentati i concetti e i più importanti sistemi per l'organizzazione del lavoro con strumenti informatici, soprattutto per ciò che riguarda la progettazione, il flusso delle informazioni e il lavoro di gruppo. PROGRAMMA. I sistemi informativi e le loro limitazioni. I formalismi per la progettazione del lavoro e il loro uso. Il flusso delle informazioni nel lavoro d'ufficio. Controllo del flusso e degli accessi. Autorizzazioni. Sistemi di Workflow. Organizzazione del lavoro di gruppo. Sistemi di Workgroup. Responsabilità personali. Sistemi informatici integrati per l'organizzazione del lavoro. Saranno presentate testimonianze dirette di imprenditori, manager, funzionari e sindacalisti di aziende del settore informatico e telecomunicazioni. Programmazione (G. Aguzzi) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le basi metodologiche e le relative conoscenze del paradigma di programmazione imperativo (linguaggio alla Von Neumann con comandi di assegnazione, controllo, iterazione e definizione/uso di sottoprogrammi) ed introdurre quello dichiarativo (equazioni ricorsive). Ulteriore obiettivo del corso è quello di fornire gli strumenti minimali per poter provare la correttezza di programmi tramite l’uso dei concetti di proprietà invarianti di cicli e prove induttive. PROGRAMMA. Linguaggi formali, grammatiche context-free, loro correttezza e completezza, rappresentazione dell’informazione. Il paradigma della programmazione imperativa: il linguaggio alla Von Neumann VN: assegnazione, I/O, controlli, iterazione, variabili semplici e matriciali, sottoprogrammi funzione e procedura. Principali algoritmi di sorting di vettori. Proprietà invarianti di cicli e prove induttive. Il paradigma della programmazione dichiarativa: i termini e i sistemi di riscrittura ed uso della ricorsione. Il concetto di lista e sua manipolazione. La semantica operazionale dei linguaggi di programmazione: definizione della semantica operazionale del linguaggio VN. Programmazione Concorrente (R. De Nicola) OBIETTIVI FORMATIVI. Insegnare le nozioni di base della programmazione concorrente attraverso un’illustrazione dei problemi, dei concetti e delle tecniche connesse alla modellizzazione di sistemi in cui ci sono più componenti attive contemporaneamente che si coordinano e competono per l’uso di risorse condivise. Mostrare come queste tecniche possono essere utilizzate per scrivere semplici programmi in Java Concorrente. PROGRAMMA. Introduzione alla concorrenza, il problema della mutua esclusione e della sincronizzazione condizionale. Meccanismi per scambio di messaggi: memoria condivisa e comunicazione esplicita, sincronia ed asincronia. Strumenti per il controllo della concorrenza e le loro proprietà: semafori, monitors a Remote Procedure Calls. Risoluzione di problemi attraverso primitive linguistiche per la concorrenza: produttore-consumatore, lettori-scrittori, filosofi a cena. Progetto di semplici algoritmi concorrenti in Java: l'uso dei threasds, dei metodi sincronizzati e dei monitors. Programmazione di Reti (M. Loreti) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie a sviluppare applicazioni di rete utilizzando diversi paradigmi: Client-Server, RPC, Code on-demand e Agenti Mobili. Nella prima parte del corso verrà utilizzato il linguaggio Java quale strumento per la programmazione di applicazioni Client-Server. Successivamente si analizzeranno le tecnologie attualmente disponibili, sia dal lato Client che dal lato Server, per lo sviluppo di applicazioni orientate al Web. Infine, verranno prese in considerazione le tecnologie, basate sul linguaggio XML, per l'implementazione di Servizi Web. Come risultato, gli studenti impareranno a sviluppare un'applicazione di complessità media che soddisfi requisiti di prestazioni e di sicurezza. PROGRAMMA. Il linguaggio Java: le eccezioni, il pacchetto java.io, i Thread. Programmazione Client-Server in Java: i socket, broadcast, multicast. Documenti Web: il linguaggio HTML, i fogli di Stile. Programmazione Web lato Client: le applet, Javascript. Programmazione Web lato Server: PHP, Servlet, JSP. Il linguaggio XML. I Web service: XML-RPC, SOAP e WSDL. Agenti Mobili. Reti di Calcolatori (R. Sprugnoli) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti le nozioni necessarie a comprendere le diverse problematiche di progettazione soggiacenti le moderne reti di calcolatori. Focalizzandosi su Internet, il corso intende promuovere una comprensione pratica delle reti e dei loro blocchi costituenti. Come risultato, gli studenti impareranno il perchè della progettazione delle reti: non semplicemente i fatti che circondano i sistemi attuali ma i principi su cui si basa la progettazione delle moderne reti di calcolatori. PROGRAMMA. Requisiti ed architettura delle reti di calcolatori. Nodi e collegamenti. Codifica dei dati. Framing dei dati. Rilevamento degli errori. Trasmissione affidabile. Ethernet. Token ring. Reti a commutazione di pacchetto. Circuiti virtuali. Reti LAN estese. Inter-reti ed il protocollo IP. Metodo costo-direzione e metodo dello stato dei collegamenti. Inter-reti globali. Il DNS. Il protocollo TCP: apertura e chiusura della connessione, finestra scorrevole rivista, ritrasmissione adattiva. Controllo della congestione in TCP. Ricerca Operativa (D. De Luca Cardillo) OBIETTIVI FORMATIVI. Il corso intende fornire le conoscenze di base e i modelli più usati della ricerca operativa, disciplina che fornisce strumenti utili in molti ambiti lavorativi, per la gestione e per l’organizzazione, per ottimizzare costi e risorse in funzione di determinati obiettivi e vincoli. Lo studente dovrà acquisire capacità a modellare situazioni reali e a individuare per alcuni tipi di problemi che gli vengono prospettati le modalità risolutive esistenti in letteratura. PROGRAMMA. Programmazione lineare e sue applicazioni. Cenni alla Programmazione Intera. Programmazione dinamica e sue applicazioni. Saranno trattate in particolare applicazioni ai problemi di traffico urbano e alla gestione efficiente di servizi pubblici. Il programma potrà essere modificato in base a particolari esigenze didattiche riscontrate Semantica della Concorrenza (R. Pugliese) OBIETTIVI FORMATIVI. Studiare i fenomeni che si manifestano nei sistemi concorrenti, distribuiti e con mobilità, sia software che hardware, ed inquadrarli in un ambiente formale che permetta di progettare, specificare, realizzare ed analizzare applicazioni. PROGRAMMA. CCS: un calcolo di base per la concorrenza, semantiche operazionali ed osservazionali, assiomatizzazioni. Pi-calcolo: un calcolo con mobilità di interconnessioni, semantiche operazionali ed osservazionali, sistemi di tipo. Pi-calcolo Distribuito, Klaim ed Ambient: calcoli con mobilità di codice e di agenti, semantiche operazionali, sistemi di tipo per la sicurezza, esempi di applicazioni. Confronti con altri calcoli fondazionali e linguaggi derivati. Semantica dei Linguaggi di Programmazione (B. Venneri) OBIETTIVI FORMATIVI. Obiettivo del corso è quello di presentare alcuni concetti fondazionali dei linguaggi di programmazione, imperativi e orientati agli oggetti. L’approccio è sia teorico (discussione del polimorfismo e tecniche di prova basate sulla semantica operazionale) che pragmatico (es. algoritmi di typechecker e implementazione di interpreti). PROGRAMMA. Sistemi di tipi come strumento sintattico per modellare aspetti di astrazione e di sicurezza nella programmazione. Algoritmi di typechecker e implementazione. Polimorfismo. Semantica operazionale strutturata e relative tecniche di prova di proprietà di programmi. Un linguaggio Java semplificato: analisi del sistema di tipi e semantica di computazione. . Sicurezza delle Reti (M. Boreale) OBIETTIVI FORMATIVI. Il corso mira a fornire una comprensione approfondita degli aspetti scientifici e tecnologici della crittografia e della sicurezza in rete (network security). PROGRAMMA. Un modello per la network security. Crittografia a chiave condivisa. Cifrari storici. Il cifrario di Vigenere, e la sua criptanalisi. Cifrari perfetti secondo Shannon, One-Time- PAd. Cifrari di Feistel. Il Data Encryption Standard (DES). L'Advanced Encryption Standard (AES). Gestione della chiave segreta e relativi problemi. Crittografia a chiave pubblica. Elementi di teoria dei numeri. Il cifrario RSA. Gestione della chiave con la crittografia a chiave pubblica. Il protocollo di Diffie-Hellman. Funzioni hash one-way e MAC. Firma digitale. Il sistema Pretty Good Privacy (PGP). La sicurezza nell'architettura IP. Il protocollo Secure Socket Layer (SSL). Sistemi Concorrenti e Distribuiti (R. De Nicola) OBIETTIVI FORMATIVI. Questo modulo introduce dei formalismi per specificare, progettare, implementare, analizzare e dimostrare proprietà di sistemi concorrenti e distribuiti. Inoltre fornisce i presupposti per l'ulteriore studio e la ricerca su teoria dei sistemi distribuiti, dei sistemi real-time e dei sistemi fault-tolerant. Il modulo insegnerà come specificare, progettare e realizzare semplici sistemi concorrenti. Gli allievi inoltre impareranno come verificare la correttezza di tali sistemi anche attraverso strumenti software di supporto. PROGRAMMA. Introduzione ai sistemi concorrenti e distribuiti, alle nozioni di concorrenza e di comunicazione. Strumenti per la specifica di sistemi concorrenti: sistemi di transizione etichettati ed algebre di processo, semantiche operazionali. Strumenti per la verifica di proprietà: equivalenze comportamentali, logiche temporali e modali. Equivalenze basate sulla bisimulazione ed equivalenze basate sul testing. Sintassi e semantica di CCS (Calculus of Communicating Systems). Equivalenze osservazionali, congruenze, caratterizzazioni equazionali e ragionamento algebrico. Specifiche ed esecuzioni dei sistemi concorrenti in CCS. Presentazione di strumenti software per la verifica: CWB (Edinburgh Concurrency Workbench), Jack (Just Another Concurrency Kit), MC (Model Checkers). Sistemi Operativi (R. Pugliese) OBIETTIVI FORMATIVI. Il corso si propone di portare a conoscenza dello studente le problematiche inerenti la progettazione e realizzazione delle varie parti che costituiscono un sistema operativo, evidenziando i legami hardware/software e le interazioni con i programmi utente. Dalla conoscenza della struttura interna del sistema operativo, e non solo della sua interfaccia, può derivare un utilizzo più consapevole e mirato dello stesso e un uso efficace dei suoi strumenti PROGRAMMA. Principi e funzioni principali di un sistema operativo. I processi. Scheduling della CPU. Comunicazione e sincronizzazione tra processi. Lo stallo. Gestione della memoria. Memoria virtuale. Gestione delle periferiche. Il file system: directory, metodi di accesso, allocazione dei file. Strutture per Basi di Dati (R. Sprugnoli) OBIETTIVI FORMATIVI. Il corso fornisce le nozioni di base per la comprensione della struttura interna dei sistemi per la gestione delle basi di dati e di sistemi analoghi. Gli argomenti vanno dalla struttura interna degli archivi e degli indici ai corrispondenti metodi di ricerca; dalla implementazione degli archivi e delle associazioni alla loro gestione fisica; dalle realizzazioni degli operatori dell’algebra relazionale all’ottimizzazione delle interrogazioni. PROGRAMMA. Struttura fisica degli archivi e metodi di accesso. Bufferizzazione e ottimizzazione dell’I/O. Metodi di accesso procedurali (Hashing). Hashing dinamico. Metodi di accesso ad albero (B-alberi). Gestione delle informazioni a lunghezza variabile. Liste multiple e liste invertite. Gli operatori dell’algebra relazionale. Piani d’accesso e ottimizzazione delle query. La concorrenza sui B-alberi. Tecniche di Comunicazione (D. De Luca Cardillo) OBIETTIVI FORMATIVI. Il corso intende fornire agli studenti strumenti per comprendere le diverse modalità d’approccio alla vita aziendale, ai rapporti interpersonali, alla tempificazione e gestione di attività per avviare dinamiche sia interpersonali che lavorative produttive e volte all’efficacia degli interventi. PROGRAMMA. Sistema decisionale. Programmazione reticolare: CPM PERT e Metodo Antecedenti. Project management e uso di programmi per la trattazione automatica di progetti (MS Project e prodotti free–ware). Seminari su: Internet e comunicazione, Rapporti con la clientela e relazioni interpersonali. Il programma potrà essere modificato in base a particolari esigenze didattiche riscontrate Tecniche di Programmazione OBIETTIVI FORMATIVI. Il corso presenta gli strumenti concettuali e metodologici necessari per la produzione di software rispondente ai requisiti e consegnato nel rispetto di tempi e costi prestabiliti. È prevista la realizzazione di un progetto didattico, da svolgere e completare in parallelo alle lezioni, in cui saranno sperimentati i diversi aspetti della conduzione di un progetto software. PROGRAMMA. Richiami e approfondimenti di ingegneria del software: il processo di sviluppo software, la gestione dei progetti software, la stima e il controllo dell’impegno, il controllo della qualità del software e del processo software. Documentazione e gestione di progetto: documentazione e controllo di analisi, progettazione, verifica; pianificazione e consuntivazione delle attività; controllo della documentazione, regolamentazione delle attività. Attività di progetto: incontri con il committente, verifiche ispettive, revisioni congiunte, consegna e collaudo. Indirizzi utili Per informazioni rivolgersi a: • Segreteria Studenti, Viale Morgagni 48, Tel. 055 4598428; [email protected] (modulistica, bollettini e aspetti burocratico-formali). • Presidenza Corso di Laurea, Dipartimento di Sistemi e Informatica,Viale Morgagni 65, 50134 – Firenze; [email protected] • Rappresentanti degli studenti: Stefano Belli: [email protected] Andrea Marino: [email protected] Vincenzo Milone: [email protected] Massimiliano Olivieri: [email protected] Michela Piccinotti: [email protected] Laurea Specialistica in Scienze e Tecnologie dell’Informazione A partire dall’anno accademico 2004-2005 presso l’Università degli Studi di Firenze, Facoltà di Scienze Matematiche, Fisiche e Naturali, è stato attivato il Corso di Laurea Specialistica in Scienze e Tecnologie dell’Informazione. Il Corso prevede un solo curriculum ed ha come obiettivo la formazione di specialisti in possesso di un'adeguata conoscenza degli strumenti, delle metodologie e dei fondamenti dell'Informatica, sia negli aspetti tecnologici ed applicativi, sia negli aspetti scientifici. I laureati dovranno avere un'ottima preparazione tecnica che ne consenta l'inserimento nel mondo del lavoro nel settore delle tecnologie dell'informazione e della progettazione di sistemi informatici, con particolare riguardo ai sistemi informativi e ai sistemi distribuiti. La preparazione culturale dovrà permettere loro di adeguarsi facilmente all'evolversi della tecnologia, di assumere ruoli di responsabilità nell'ambito aziendale e di poter proseguire gli studi ai livelli successivi. Il Corso ha la durata di 2 anni. L’attività normale dello studente corrisponde a quella necessaria per il conseguimento di 60 crediti all’anno. Lo studente che abbia comunque ottenuto 120 crediti (oltre ai 180 acquisiti nel corso di laurea triennale di primo livello), adempiendo a tutto quanto previsto dalla struttura didattica, può conseguire il titolo anche prima della scadenza biennale. Per l’accesso al Corso di Laurea è richiesto il possesso della laurea triennale di primo livello in Informatica (classe 26) o di altro titolo riconosciuto idoneo. In particolare, i crediti acquisiti nel triennio della Laurea in Informatica presso l’Università di Firenze saranno integralmente riconosciuti e sufficienti per l’iscrizione al corso di Laurea Specialistica in Scienze e Tecnologie dell’Informazione. Il riconoscimento dei CFU per il passaggio a corsi di laurea specialistica spetta comunque alla struttura didattica competente.