SISTEMI DI ELABORAZIONE

Docenti: 
AMORETTI Michele
Codice dell'insegnamento: 
10424*7506*2016*2015*3
Crediti: 
6
Sede: 
PARMA
Anno accademico di offerta: 
2017/2018
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Secondo Semestre
Lingua di insegnamento: 

Italiano

Lingua dell'insegnamento: 

Italiano

Obiettivi formativi

La finalità del corso è quella di definire e caratterizzare i sistemi di elaborazione dell’informazione. In particolare verrà fornita allo studente la capacità di comprendere:

- macchine astratte e complessità computazionale
- modelli di programmazione parallela
- sistemi autonomici
- tecniche di simulazione
- elaborazione quantistica

Lo studente imparerà ad applicare tali competenze per:

- sviluppare modelli di sistemi di elaborazione, in particolare per studiarne le prestazioni
- progettare e sviluppare programmi paralleli
- progettare sistemi di elaborazione dotati di caratteristiche autonomiche
- sviluppare simulazioni ad eventi discreti
- progettare algoritmi e protocolli quantistici

Al termine del corso ci si attende che lo studente sia in grado di:
- conoscere le principali tipologie di macchine astratte
- conoscere le principali classi di complessità computazionale
- sviluppare modelli di sistemi di elaborazione, in particolare per studiarne le prestazioni
- conoscere le caratteristiche delle architetture parallele
- conoscere le principali tecniche di descrizione e valutazione degli algoritmi paralleli
- progettare e sviluppare programmi paralleli
- conoscere le caratteristiche dei sistemi autonomici
- progettare sistemi di elaborazione autonomici
- conoscere i principi di funzionamento dei simulatori ad eventi discreti
- sviluppare simulazioni ad eventi discreti
- conoscere i principi dell'informatica quantistica
- progettare algoritmi e protocolli quantistici

Prerequisiti

Contenuti dell'insegnamento

1. Macchine astratte e complessità computazionale
2. Calcolo parallelo
3. Sistemi autonomici
4. Tecniche di simulazione
5. Computer quantistici

1. Macchine astratte e complessità computazionale
2. Calcolo parallelo
3. Sistemi autonomici
4. Simulazione ad eventi discreti
5. Informatica quantistica

Programma esteso

Contenuti Sistemi di Elaborazione (42 ore)

1. Elaborazione automatica dell’informazione
1.1. Cenni di teoria dell'informazione; 1.2. Tassonomia dei sistemi di elaborazione; 1.3. Macchine astratte; 1.4. Complessità computazionale

2. Calcolo parallelo
2.1. Architetture parallele; 2.2. Valutazione delle prestazioni; 2.3. Modelli di programmazione parallela; 2.4. Message Passing Interface (MPI); 2.5. MapReduce; 2.6. Sistemi Multicore, General Purpose GPU Programming, CUDA

3. Sistemi autonomici
3.1. I quattro principi dell'autonomic computing; 3.2. MAPE-K; 3.3. NAM, NAM4J, Distributed Remodeling Framework

4. Tecniche di simulazione
4.1. Concetti generali sulle simulazioni; 4.2. Simulazioni ad eventi discreti

5. Computer quantistici
5.1. Cenni storici; 5.2. Richiami di algebra lineare; 5.3. Postulati della meccanica quantistica; 5.4. Quantum bit; 5.5. Circuiti quantistici; 5.6. Algoritmi quantistici; 5.7. Protocolli di sicurezza quantistici

1. Elaborazione automatica dell’informazione (5 ore)
1.1. Cenni di teoria dell'informazione; 1.2. Tassonomia dei sistemi di elaborazione; 1.3. Macchine astratte; 1.4. Complessità computazionale

2. Calcolo parallelo (13 ore)
2.1. Architetture parallele; 2.2. Algoritmi paralleli; 2.3. Valutazione delle prestazioni; 2.4. Message Passing Interface (MPI); 2.5. MapReduce; 2.6. Sistemi Multicore, OpenMP; 2.7. General Purpose GPU Programming, CUDA

3. Sistemi autonomici (3 ore)
3.1. I quattro principi dell'autonomic computing; 3.2. Il modello MAPE-K; 3.3. I framework NAM, NAM4J, DRF

4. Tecniche di simulazione (5 ore)
4.1. Concetti generali sulle simulazioni; 4.2. Simulazioni ad eventi discreti; 4.3. Modelli DEVS; 4.4. La piattaforma di simulazione DEUS

5. Computer quantistici (16 ore)
5.1. Cenni storici; 5.2. Richiami di algebra lineare; 5.3. Postulati della meccanica quantistica; 5.4. Quantum bit; 5.5. Circuiti quantistici; 5.6. Algoritmi quantistici; 5.7. Protocolli di sicurezza quantistici

Bibliografia

M. Amoretti, dispense in inglese sugli argomenti del corso.
C. Ghezzi, D. Mandrioli, "Informatica Teorica", Città Studi, 1989.
D. E. Culler, J. Pal Singh, “Parallel Computer Architecture: A Hardware/Software Approach”, Morgan Kaufman, 1999.
B.P. Zeighler, H. Praehofer, T.G. Kim, "Theory of Modeling and Simulation", Second Edition, Academic Press, 2000.
M. Nielsen, I. Chuang, “Quantum Computation and Quantum Information”, Cambridge University Press, 2011.

M. Amoretti, dispense in inglese sugli argomenti del corso.
C. Ghezzi, D. Mandrioli, "Informatica Teorica", Città Studi, 1989.
S. Arora, B. Barak, "Computational Complexity: A Modern Approach", Cambridge University Press, 2009.
G. Hager, G. Wellein, "Introduction to High Performance Computing for Scientists and Engineers", CRC Press, 2010.
B.P. Zeighler, H. Praehofer, T.G. Kim, "Theory of Modeling and Simulation", 2nd Ed., Academic Press, 2000.
M. Nielsen, I. Chuang, "Quantum Computation and Quantum Information", Cambridge University Press, 2011.

Metodi didattici

Il corso viene svolto con lezioni frontali in cui il docente spiega gli argomenti mostrando delle diapositive oppure scrivendo alla lavagna.
Alcune ore sono dedicate ad esercitazioni di programmazione parallela.
Le lezioni sulle tecniche di simulazione si concludono con un paio di esercitazioni pratiche in cui gli studenti sono invitati ad utilizzare il tool di simulazione DEUS.

Le attività didattiche saranno condotte privilegiando lezioni frontali in cui il docente spiega gli argomenti mostrando delle slide e scrivendo sulla lavagna.
Alcune ore saranno dedicate ad esercitazioni pratiche di programmazione parallela e di sviluppo di simulatori ad eventi discreti.
Il materiale didattico (comprendente slide, dispense, codice sorgente, articoli scientifici) verrà caricato con cadenza settimanale sulla piattaforma Elly.
Per scaricare il materiale didattico è necessaria l’iscrizione al corso on line.
Si ricorda agli studenti non frequentanti di controllare il materiale didattico disponibile e le indicazioni fornite dal docente tramite la piattaforma Elly.

Modalità verifica apprendimento

Non sono previste prove in itinere.

E' prevista una prova scritta (3 ore) articolata su 6-7 quesiti a risposta libera, relativi alla parte teorica del corso.

Ciascuno studente dovrà svolgere una tesina legata agli argomenti del corso. Tale tesina comporta: l'utilizzo/sviluppo di software oppure lo studio approfondito di un articolo di quantum computing; la stesura di una relazione; una presentazione alla commissione (con il supporto di diapositive).

La valutazione degli apprendimenti prevede due momenti:
1) una prova scritta della durata di 3 ore, articolata su domande aperte relative agli argomenti teorici del corso;
2) un progetto a scelta tra lo sviluppo di software parallelo, lo sviluppo di un simulatore ad eventi discreti, lo studio approfondito di un articolo di quantum computing; è prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
La prova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-4. I due punteggi si sommano a formare il voto finale.
Non sono previste prove in itinere.

Altre informazioni

Il materiale didattico e di supporto alle lezioni è disponibile sul sito http://elly.dii.unipr.it