Piano degli studi a partire dal 2014/15

Per conseguire la laurea lo studente deve acquisire 180 Crediti Formativi Universitari (CFU). Il CFU equivale a 25 ore di studio ed è la misura del volume di lavoro di apprendimento, compreso lo studio individuale, richiesto ad uno studente per l'acquisizione di conoscenze ed abilità nelle attività formative previste dagli ordinamenti didattici dei corsi di studio.

1 anno

  • Algoritmica e laboratorio (12 CFU)

    Progettazione e analisi di algoritmi. Risoluzione di problemi con strutture dati. Attivita' di programmazione in laboratorio.

    Breve introduzione a problemi computazionali, indecidibilità, e trattabilità.

    Complessità computazionale: limiti superiori e inferiori.

    Tecniche di analisi: Relazioni di Ricorrenza, analisi ammortizzata e analisi competitiva.

    Tecniche algoritmiche: Divide et Impera, Programmazione Dinamica, Greedy.

    Algoritmi per Sequenze: ricerca e ordinamento

    Algoritmi per Alberi: ricorsione, visite, e rappresentazioni.

    Dizionari: Alberi bilanciati, Tabelle hash, Trie.

    Algoritmi e strutture di dati randomizzate.

    Algoritmi per Grafi: rappresentazione, algoritmi di visita, Albero di Copertura Minimo, Cammini Minimi (Dijkstra).


    Modalità di verifica: Prova scritta e orale

  • Fisica (6 CFU)

    Introduzione ai principi e al metodo scientifico della fisica classica.

    Sistemi di riferimento e coordinate, cinematica e dinamica dei sistemi elementari nella modellazione newtoniana.

    Simmetria, invarianza e leggi di conservazione.

    Modellazione dei processi della dinamica dei punti materiali e dei fenomeni elettromagnetici.

    Modellazione di processi naturali deterministici.



    Modalità di verifica: Prova scritta e orale

  • Matematica discreta e algebra lineare (12 CFU)

    MODULO DI MATEMATICA DISCRETA
    • Insiemi, relazioni, funzioni 8
    • Principio di induzione e definizioni per ricorrenza 8
    • Il concetto di cardinalità e calcolo combinatorio 12
    • Aritmetica e congruenze 12
    • Polinomi e fattorizzazione 8

    MODULO DI ALGEBRA LINEARE
    • Spazi vettoriali e basi 8
    • Sistemi lineari e loro intepretazione geometrica 12
    • Matrici e determinanti 12
    • Risoluzione di sistemi lineari 8
    • Polinomio caratteristico e criteri di diagonalizzabilità di operatori lineari 8

    Modalità di verifica: Prova scritta e orale

  • Logica per la Programmazione (6 CFU)

    Obiettivi:

    Obiettivo del corso è la presentazione del calcolo proposizionale e del calcolo del primo ordine e la loro applicazione alla specifica di programmi e alla dimostrazione di correttezza dei programmi in base alla logica di Hoare.

    Contenuti:

    Il concetto di enunciato dichiarativo
    Sintassi della logica proposizionale
    Semantica della logica proposizionale (tabelle di verità)
    Leggi per il calcolo proposizionale e dimostrazioni
    Sintassi della logica del primo ordine
    Semantica della logica del primo ordine (interpretazioni, modelli ecc.)
    Leggi per il calcolo del primo ordine e dimostrazioni
    Specifica di proprietà di programmi
    Prova di correttezza di programmi mediante il calcolo delle triple di Hoare


    Modalità di verifica: Prova scritta e orale

  • Analisi matematica (9 CFU)

    Fornire i primi strumenti di analisi matematica intesi sia come tecniche di calcolo che come esempi di ragionamento logico deduttivo.

    Contenuti

    Numeri reali e numeri complessi.

    Prime definizioni legate al concetto di funzione di una variabile reale. Le principali funzioni elementari. Limiti di funzioni.

    Infinitesimi ed infiniti. Funzioni continue e funzioni derivabili: principali proprietà. Ricerca dei punti di massimo e di minimo. Convessità. Formula di Taylor. Studio di una funzione e del suo grafico.

    L'integrale e le sue proprietà; teorema fondamentale del calcolo integrale. Metodi di integrazione. Integrali impropri. Cenni su equazioni differenziali lineari del I e II ordine e a variabili separabili.

    Successioni e serie numeriche.


    Modalità di verifica: Prova scritta e orale

  • Conoscenza della lingua inglese (3 CFU)


    Modalità di verifica: Test

  • Programmazione I e laboratorio (12 CFU)

    Introduzione alla risoluzione di problemi e alla programmazione con esercitazioni in laboratorio.

    Contenuti

    Grammatiche libere

    Presentazione del Linguaggio funzionale Caml

    Programmazione funzionale

    Presentazione del Linguaggio imperativo C (rappresentazione numerica, funzioni, procedure, parametri, puntatori)

    Programmazione imperativa (array, liste, ecc.)

    Definizione di un interprete in Caml del Linguaggio Imperativo


    Modalità di verifica: Prova scritta e orale

2 anno

  • Basi di dati (6 CFU)

    Fornire le basi scientifiche e metodologiche per la progettazione, la realizzazione e l'uso di basi di dati relazionali.

    Contenuti

    I sistemi informativi e informatici. Funzionalità dei sistemi per la gestione di basi di dati (DBMS).

    I meccanismi di astrazione dei modelli dei dati a oggetti. La progettazione di basi di dati usando il modello a oggetti.

    Il modello dei dati relazionale. La trasformazione di schemi a oggetti in schemi relazionali

    Il linguaggio SQL per creare e usare basi di dati. Interrogazioni semplici, giunzioni, quantificazioni esistenziali ed universali, raggruppamento.

    La teoria relazionale delle basi di dati. Le dipendenze fra i dati. Decomposizioni di schemi relazionali. Forme normali.

    Architettura dei DBMS.


    Modalità di verifica: Prova scritta e orale

  • Ricerca operativa (6 CFU)

    Conoscenze: L’insegnamento ha l’obiettivo di fornire le conoscenze di base di Ricerca Operativa.

    Obiettivi: L’insegnamento ha l’obiettivo di fornire gli strumenti per costruire modelli matematici di ottimizzazione, l’analisi di tali modelli e i metodi risolutivi.


    ARGOMENTI

    MODELLI MATEMATICI DELLA RICERCA OPERATIVA.

    PROGRAMMAZIONE LINEARE.

    PROGRAMMAZIONE LINEARE SU RETI.

    PROGRAMMAZIONE LINEARE INTERA.

    Modalità di verifica: Prova scritta e orale

  • Sistemi Operativi e laboratorio (12 CFU)

    Principi e concetti per la gestione delle risorse di un sistema di elaborazione.
    Laboratorio di programmazione di sistema.

    Contenuti

    MODULO DI SISTEMI OPERATIVI
    Funzioni, struttura e componenti dei Sistemi Operativi
    - Nucleo e Processi
    - Gestione dei processi e del processore: concorrenza e sincronizzazione tra processi e tra thread, scheduling
    - Gestione della memoria, memoria virtuale e cache
    - Gestione dei dispositivi di I/O e di memoria di massa
    - Sistema di archiviazione e gestione degli archivi

    MODULO DI LABORATORIO DI PROGRAMMAZIONE DI SISTEMA
    - Unix e la shell bash
    - Utilizzo di C in ambiente GNU per lo sviluppo di applicazioni di sistema
    - Programmazione di sistema: file system, processi e memoria, thread
    - Meccanismi di IPC: Pipe, Socket, Segnali

    Modalità di verifica: Prova scritta e orale

  • Calcolo numerico (6 CFU)

    Uso e valutazione delle metodologie di risoluzione di problemi del calcolo scientifico. Analisi degli aspetti computazionali, quali il condizionamento dei problemi esaminati, la stabilita' e la complessita' dei metodi proposti.

    Contenuti

    Rappresentazione dei numeri reali e analisi dell'errore numerico: errori di arrotondamento, aritmetica di macchina e propagazione degli errori.

    Condizionamento di un problema e complessità computazionale di un algoritmo numerico.

    Metodi iterativi per le equazioni non lineari: i principali metodi e lo studio della loro convergenza.

    Metodi numerici per l'algebra lineare: i principali metodi diretti e iterativi per la risoluzione di sistemi lineari.

    Interpolazione e integrazione numerica: il polinomio di interpolazione, le formule di quadratura interpolatorie.

    Modalità di verifica: Prova scritta e orale

  • Architettura degli elaboratori (9 CFU)

    Basi scientifiche e tecnologiche per comprendere le caratteristiche dei sistemi di elaborazione ai vari livelli e la loro relazione con gli strumenti di programmazione. Strutturazione dei sistemi mediante moduli concorrenti e cooperanti.

    Contenuti

    Metodologia di strutturazione di sistemi di elaborazione:

    Strutturazione a livelli o macchine virtuali, moduli concorrenti e comunicanti; componenti per reti logiche; livello dell'architettura firmware, unità di elaborazione e comunicazioni.

    Livello della macchina assembler e processori: modi di indirizzamento, puntatori, procedure; modalità di compilazione per linguaggi imperativi (C); architettura base di processori general-purpose; valutazione delle prestazioni, benchmarking, impatto di architetture Risc vs Cisc

    Architettura globale dell'elaboratore: architettura base di CPU, memorie e ingresso-uscita; supporto a processi e thread; supporto all'allocazione statica e dinamica della memoria.

    Architetture ad alte prestazioni e tendenze: memorie cache; architetture pipeline, superscalari/multithreading, multicore.

    Modalità di verifica: Prova scritta e orale

  • Programmazione II (9 CFU)

    Programmare come progetto e verifica di astrazioni, gerarchie di macchine virtuali e supporto run-time.

    Contenuti

    Programmazione orientata ad oggetti. Il nucleo del linguaggio Java: classi, oggetti, ereditarietà, astrazioni sui dati (specifica e implementazione, tecniche di verifica induttiva), astrazione mediante gerarchie, polimorfismo à la Java

    Strutture a run time: ambiente, memoria, heap; blocchi, sottoprogrammi, records di attivazione, pila dei records di attivazione; oggetti; interpretazione, compilazione.


    Modalità di verifica: Prova scritta e orale

  • Ingegneria del software (6 CFU)

    Il corso introduce  i problemi della produzione di sistemi software e illustra alcuni processi di sviluppo software. Viene presentato in dettaglio un processo di sviluppo guidato dai modelli, definendo modelli statici e modelli dinamici per le principali fasi del processo: analisi del dominio, analisi dei requisiti, progettazione architettonica e dettaglio. Infine si affronta il tema della verifica: obiettivi e pianificazione delle verifiche, progettazione e valutazione delle prove.

    Modalità di verifica: Prova scritta e orale

  • Calcolo delle probabilita' e statistica (6 CFU)

    Assimilare le principali nozioni di Calcolo delle Probabilita' ed essere in grado di utilizzare le procedure base dell'inferenza statistica (eseguire una stima e pianificare un test statistico).

    Contenuti

    Spazi di probabilità, probabilità condizionata e indipendenza, formula di Bayes.

    Variabili aleatorie discrete e con densità, valori attesi e momenti, indipendenza di variabili aleatorie, principali esempi di variabili aleatorie.

    Cenni di statistica descrittiva. Definizione di modello statistico: stime, intervalli di fiducia e test statistici. Alcuni esempi di test statistici


    Modalità di verifica: Prova scritta e orale

3 anno

  • Esame a libera scelta dello studente I (6 CFU)

    Esame a libera scelta dello studente.

    Modalità di verifica: Prova scritta e orale

  • Programmazione di Interfacce (6 CFU)

    Presentare i principi e le principali tecniche per la programmazione di interfacce utente.

    Il problema: dispositivi di interazione e visualizzazione e il sistema percettivo umano
    Colori e gamut
    La programmazione ad eventi nei sistemi grafici
    Assemblare interfacce grafiche usando componenti
    La struttura di un sistema grafico e la pipeline grafica
    Programmazione di componenti grafici
    Animazioni
    Il Web browser: un renderer programmabile
    Javascript, DHTML e CSS
    Presentation system a retention
    Introduzione alla grafica 3D: il rendering 3D


    Modalità di verifica: Progetto e discussione orale

  • Introduzione all'Intelligenza Artificiale (6 CFU)

    Apprendere i concetti principali e i metodi che stanno alla base della progettazione e sviluppo di sistemi di intelligenti.

    1. Risoluzione dei problemi come ricerca
    • Formulazione dei problemi come ricerca in uno spazio di stati.
    • Strategie di ricerca non informata.
    • Ricerca euristica. Generazione e valutazione di euristiche.
    • Problemi di soddisfacimento di vincoli.
    • Metodi locali.
    • Ricerca con avversario (giochi).

    2. Rappresentazione della conoscenza e ragionamento
    • Rappresentazione di conoscenza di senso comune e limiti espressivi della logica classica. La mediazione tra espressività e complessità computazionale.
    • Algoritmi efficienti per la soddisfacibilità.
    • Deduzione automatica: il metodo di risoluzione.
    • Programmazione logica e cenni ai sistemi a regole.
    • Logiche per il web semantico.

    3. Ragionamento incerto e probabilistico
    • Rappresentazione di conoscenza “incerta”.
    • Ragionamento probabilistico.

    4. Apprendimento automatico
    • Introduzione al paradigma, alle “forme” e ai metodi dell’apprendimento automatico.
    • Apprendimento induttivo di regole proposizionali.
    • Apprendimento supervisionato: classificazione e regressione.
    • Apprendimento non supervisionato (clustering)
    • Validazione: tecniche e aspetti teorici.
    • Modelli dei paradigmi Bayesiano, simbolico, sub-simbolico, instance based.
    • Esempi di applicazione.

    Modalità di verifica: Prova scritta e orale con voto in trentesimi

  • Esame a libera scelta dello studente II (6 CFU)

    Esame a libera scelta dello studente.

    Modalità di verifica: Prova scritta e orale

  • Reti di calcolatori e laboratorio (12 CFU)

    Le reti di calcolatori e i protocolli di comunicazione. Progettazione e sviluppo di applicazioni di rete.

    Contenuti

    MODULO DI RETI DI CALCOLATORI
    -Introduzione alle reti
    - Il livello application
    - Condivisione di file peer-to-peer
    - Il livello transport
    - Il livello network
    - Il livello link
    - Complementi: Sicurezza nelle reti, Introduzione ai servizi Web, Wireless e Reti Mobili

    MODULO DI LABORATORIO DI PROGRAMMAZIONE DI RETE

    il corso si propone di introdurre i concetti fondamentali della programmazione concorrente in JAVA e di fornire gli strumenti per lo sviluppo di applicazioni distribuite in JAVA. In particolare nella prima parte del corso viene introdotto il modello di concorrenza di JAVA (threads, mutua esclusione, cooperazione di Threads, Thread Pooling).
    Nella seconda parte del corso vengono introdotti i socket sia TCP che UDP, riprendendo il concetto di stream e approfondendo il concetto di serializzazione di oggetti.
    Nella terza parte del corso viene introdotta la programmazione ad oggetti distribuita, con particolare riferimento al meccanismo di Remote Method Invocation.
    Infine l'ultima parte del corso prevede un'attività pratica su una rete virtuale, in particolare si forniscono gli strumenti per la configurazione di una rete: interfacce, routing, DNS.
    Il corso si conclude con l'assegnazione di un progetto didattico.

    Modalità di verifica: Prova scritta, progetto ed orale

  • Gruppo Attività per conseguimento titolo (12 CFU a scelta)
  • Elementi di calcolabilita' e complessita' (6 CFU)

    Obiettivi formativi: Introduzione alle nozioni fondamentali della teoria della calcolabilità e della complessità.

    Contenuti

    Introduzione alle nozioni fondamentali della teoria della calcolabilità e della complessità.

    Contenuti

    Linguaggi Formali e Automi: grammatiche, linguaggi e operazioni su di essi, gerarchia di Chomsky; automi a stati finiti, grammatiche regolari, espressioni regolari; automi a pila, grammatiche libere da contesto

    Calcolabilità: Idea intuitiva di algoritmo, Macchina di Turing per accettare e calcolare, funzioni ricorsive primitive, diagonalizzazione, funzioni ricorsive generali, Goedelizzazione, Padding Lemma, Forma Normale, Funzione Universale, teorema s-m-n, insiemi ricorsivi e r.e., problemi insolubili e riducibilità

    Complessità: problemi risolubili in tempo polinomiale, teorema di speed-up, teorema del gap, teorema della gerarchia, problemi risolubili nondeterministicamente in tempo polinomiale, riduzioni in tempo polinomiale, problemi NP-completi (SAT).



    Modalità di verifica: Prova Scritta e orale

  • Gruppo Insegnamento complementare (6 CFU a scelta)
    • Sicurezza di Sistemi ICT (6 CFU)

      Il corso si propone di mettere in grado il laureato triennale di conoscere ed utilizzare alcuni controlli di sicurezza che permettono di aumentare in modo significativo la sicurezza offerta da un sistema ICT. Il corso è organizzato in tre parti: (1) concetti di base della sicurezza, (2) esempi di controlli di sicurezza, (3) seminari su argomenti legati alla sicurezza (quali legislazione informatica e aspetti Web della sicurezza).


      Modalità di verifica: Seminari degli studenti su temi collegati al corso

    • Tecniche per l'integrazione di sistemi (6 CFU)

      Il corso si propone di introdurre alcune delle tecniche più comunemente utilizzate per realizzare l’integrazione di sistemi software eterogenei, quali in particolare programmazione basata su componenti, linguaggi di scripting ed enterprise service bus.


      Modalità di verifica: Prova scritta o progetto, e orale.

    • Sviluppo di Applicazioni Mobili (6 CFU)

      1. Introduzione, storia del mercato mobile, storia di Android.
      2. Architettura di Android; rapporto con Linux, visione a strati
      3. Dalvik VM, ambiente di sviluppo, deploy di applicazioni e Market
      4. Il sistema delle risorse e degli asset; dispatching a runtime
      5. Activity e ciclo di vita; il dispatching degli Intent; Layout e View; scrivere una custom View
      6. Listview e DataAdapter; dialog, notifiche e alert
      7. Drawable e sue sottoclassi; approfondimenti su patch
      8. Tematiche di storage: Bundle e Parcelable; preferenze; file system; caching; SQLlite e classi helper; ContentProvider e ContentResolver
      9. Services
      10. Broadcast receiver e servizi di sistema (telefonia, sensori, ecc.)
      11. Esecuzione asincrona e in background
      12. Programmazione nativa in C

      Modalità di verifica: progetto e esame orale

    • Economia (6 CFU)

      Creare un tecnico informatico facilmente inseribile nelle imprese manifatturiere o di servizio. Il soggetto deve essere in grado di analizzare un'impresa sulla base di cognizioni micro e macro economiche di base compreso il bilancio. Deve conoscere la formazione dei costi ed il loro controllo in modo tale da permettete un uso efficace di strumenti informatici all'interno di una impresa.
      Modalità di verifica: esame scritto e orale

    • Esperienze di programmazione (6 CFU)

      Il corso intende mostrare attraverso esempi ragionati alcune tecniche di programmazione adatte a risolvere problemi reali. Verranno mostrate esempi sia di problemi di elevata complessità temporale che di problemi di gestione di grandi quantità di dati.
      Sarà fatto anche il confronto tra linguaggi diversi (Java, C, C++, Matlab, Mathematica) sempre limitandosi ad esempi significativi.
      Il corso servirà anche come contenitore per la presentazione di esperienze di programmazione da parte di gruppi di ricerca del dipartimento.


      Modalità di verifica: Progetto e discussione orale

    • Laboratorio di Applicazioni Internet (6 CFU)

      Il Corso presenta le architetture, i protocolli e gli strumenti di sviluppo per la realizzazione di Applicazioni Internet, permettendo agli studenti di esercitarsi nell'uso degli stessi nello sviluppo incrementale di un articolato progetto didattico in ambiente Java Enterprise (JEE).

      Syllabus
      - Architettura delle Applicazioni Internet
      - Introduzione al Protocollo HTTP, uso applicativo lato client e server
      - Introduzione all'XML, tecniche di parsing e validazione
      - Introduzione a SOAP/WSDL per la realizzazione di applicazioni di tipo Web Services
      - Uso evoluto dei Web Services: realizzazione di nodi intermedi, uso dei servizi infrastrutturali (WS-*)
      - La gestione delle transazioni nelle Applicazioni Internet
      - Aspetti di Sicurezza nelle Applicazioni Internet

      Modalità di verifica: Progetto e discussione orale

    • Gestione di reti (6 CFU)

      Obiettivi: Fornire agli studenti una conoscenza di base dei problemi della gestione di rete, degli strumenti per la gestione disponibili e dei principi di base che permettono di gestire complesse reti di comunicazioni. Inoltre sono analizzate le piu' comuni esigenze di monitoraggio (rete, sistemi, servizi, applicazioni, sicurezza) su reti eterogenee (wired e wireless), nonche' gli strumenti (open-source o commerciali) disponibili sul mercato da utilizzare per fornire anche una conoscenza pratica dell'argomento
      Modalità di verifica: Progetto, prova scritta e orale

    • Macchine virtuali per linguaggi di programmazione di alto livello (6 CFU)

      Una macchina virtuale è un insieme di programmi (software) che simulano il comportamento di una macchina diversa dalla macchina fisica su cui il software viene eseguito. I vantaggi della virtualizzazione possono essere, a seconda del contesto: l’indipendenza dalla piattaforma, la portabilità, la robustezza, affidabilità e la protezione del software. Nella parte introduttiva del corso,si esaminano gli ambiti e le tipologie di machine virtuali focalizzandosi successivamente sulle high level language virtual machines (HHL VMs). Verranno considerate la Pascal P-code VM, the JVM e la CLI VM, il corso approfondisce lo studio delle caratteristiche e dell’implementazione della JVM, e comprende una parte pratica, in laboratorio, per la generazione di progammi in byte code utilizzando l’assembler Oolong
      Modalità di verifica: Progetto e orale

    • Simulazione (6 CFU)

      Il corso si propone di fornire gli strumenti di base per la costruzione e l'utilizzo di modelli di simulazione. Dopo un'introduzione alla simulazione saranno presentate le principali tecniche di simulazione, con particolare attenzione alla simulazione discreta. Una parte consistente del corso sarà dedicata alle metodologie statistiche per l'analisi dei dati di input e di output. Nell'ultima parte del corso saranno presentati i principali concetti della System Dynamics edella simulazione per agenti autonomi.

      Introduzione ai modelli di simulazione
      Simulazione discreta
      Il sistema da modellare
      Approcci alla modellazione
      Simulazione per processi e per attività
      Funzioni di distribuzione e test statistici
      Variabili casuali
      Distribuzioni discrete e continue
      Stima di parametri
      Test di ipotesi
      Analisi e scelta dei dati di input
      Distribuzioni empiriche
      Analisi dei dati di input
      Numeri pseudocasuali
      Analisi dei dati di output
      Analisi del transitorio
      Tecniche per la riduzione della varianza
      Modelli di Dinamica dei Sistemi
      Diagrammi causali
      Livelli e flussi
      Ritardi
      Exponential smoothing
      Scelta dell'unità di tempo e metodi di integrazione

      Modalità di verifica: Progetto e discussione orale

    • Verifica e Validazione del Software (6 CFU)

      Obiettivi Il corso fornisce le conoscenze necessarie per organizzare e svolgere una fase di test tenendo conto sia del tipo di applicazione sia del tipo di verifica o validazione da svolgere. Vengono inoltre fornite le informazioni necessarie all'utilizzo dei principali strumenti automatici applicabili durante la fase di test utili sia alla sua pianificazione, sia alla derivazione dei casi di test da eseguire.


      • Il processo di verifica. Pianificazione, misurazione e valutazione della fase di test.
      • Tecniche statiche: ispezione e revisione del codice, verifica di modelli.
      • Tecniche dinamiche: testing basato sulle specifiche e sul codice.
      • Mutation Testing.
      • Test di conformità.
      • Affidabilità del Software: concetti base, approccio SRET, modelli di Reability growth
      • Testing di software orientato agli oggetti.
      • Model based testing, UML testing.
      • Component based testing.
      • Service Oriented testing.


      Modalità di verifica: Progetto e discussione orale

    • Teoria dell'Informazione (6 CFU)

      Obiettivi
      Il corso tratta in modo elementare dei Fondamenti della Teoria dell’Informazione, Introducendo concetti come Entropia, Codifica, Compressione correzione di errori, dovrebbe servire come prerequisito per gli studi successivi che trattano la generazione la codifica e la trasmissione dell’informazione.

      Syllabus
      • Concetti generali di Teoria dell'Informazione. La funzione entropia. La proprietà di equiripartizione asintotica.
      • Sorgenti d'informazione discreta. Codifica in assenza di rumore: codici istantanei e codici univocamente decifrabili; il teorema della codifica in assenza di rumore. Costruzione dei codici ottimali: il metodo di Huffman. Codifica aritmetica
      • Il canale discreto senza memoria. Capacità, Schemi di decisione e probabilità di errore. La codifica del canale. Il teorema fondamentale.
      • I codici correttori a blocchi. I codici lineari, algoritmi di decodifica, capacità correttiva, probabilità di errore. I Codici ciclici, I codici BCH, i codici di Reed Solomon, applicazioni


      Modalità di verifica: Prova scritta e orale

    • Laboratorio di Basi di Dati (6 CFU)

      Il laboratorio si propone l'obiettivo di completare le nozioni relative ad analisi e progettazione di dati, procedure ed interfacce di applicazioni per basi di dati, ed alla loro realizzazione. Tutte le nozioni introdotte vengono immediatamente sperimentate dagli studenti, utilizzando notazioni standard ed un sistema commerciale, quale ad esempio ORACLE DBMS ed ORACLE WebServer, sviluppando un case study che si conclude, alla fine del corso, con la realizzazione da parte degli studenti di un sistema funzionante.
      Modalità di verifica: Progetto e prova orale

    • Sistemi Informativi Territoriali (6 CFU)

      Vengono presentati all'inizio i concetti base della rappresentazione cartografica e della cartografia numerica. Quindi si descrivono i modelli per la rappresentazione dello spazio e gli strumenti concettuali e tecnici per la rappresentazione di entità territoriali. Si presentano poi le funzionalità fondamentali degli strumenti GIS: il processo di acquisizione, correlato alle diverse tipologie di fonti di dati, le principali funzioni elaborative, con particolare attenzione all' operazione di incrocio, e infine le tecniche di restituzione. L'attività di laboratorio permetterà di prendere dimestichezza con uno dei più diffusi Software GIS commerciali e di verificare su di esso i principi esposti nelle lezioni teoriche.
      Modalità di verifica: Prova scritta e orale

    • Crittografia (6 CFU)

      Obiettivi: Introdurre le nozioni elementari sottostanti il progetto dei sistemi di cifratura moderni.

      Introduzione: definizione di crittografia e crittoanalisi.
      Cifrari Storici
      Generatori di numeri pseudo-casuali
      Cifrari perfetti: definizione e proprietà, il One-time pad.
      Cifrari a chiave simmetrica: DES, Triple-DES e AES
      Cifrari composti
      Cifrari a chiave pubblica: funzioni one-way trapdoor e RSA.
      Identificazione, Autenticazione e Firma digitale.
      Il sistema SSL.
      Smartcard: costituzione e applicazioni.
      Elementi di steganografia.
      Virus e simili attacchi.
      Elementi di crittografia quantistica.


      Modalità di verifica: Prova scritta e orale