Obiettivi formativi
Conoscenze e capacità di comprendere - Mediante le lezioni frontali tenute durante il corso, lo studente acquisirà i metodi e le conoscenze necessarie a comprendere il funzionamento delle principali tipologie di macchine astratte. Lo studente apprenderà le principali classi di complessità computazionale. Lo studente apprenderà inoltre i principi e le tecnologie delle architetture di calcolo parallele, nonché i principi dell'analisi e progettazione di algoritmi paralleli. Infine, lo studente acquisirà i metodi e le conoscenze necessari a comprendere il funzionamento dei computer quantistici e a progettare semplici algoritmi quantistici.
Capacità di applicare conoscenza e comprensione - Mediante le lezioni frontali e le esercitazioni pratiche svolte in classe relativamente ad alcuni argomenti del programma, lo studente apprenderà come applicare le conoscenze acquisite in un contesto reale di progettazione. In particolare, lo studente imparerà a: progettare algoritmi paralleli efficienti, progettare e sviluppare programmi paralleli, progettare algoritmi e protocolli quantistici.
Autonomia di giudizio - Lo studente dovrà essere in grado di comprendere e valutare in maniera critica le principali tipologie di sistemi di calcolo ad alte prestazioni.
Capacità comunicative - Tramite le lezioni frontali e il confronto con il docente, lo studente acquisirà il lessico specifico inerente i sistemi di calcolo ad alte prestazioni. Ci si attende che, al termine del corso, lo studente sia in grado di trasmettere, in forma orale e in forma scritta, i principali contenuti del corso, quali idee, problematiche ingegneristiche e relative soluzioni.
Capacità di apprendimento - Lo studente che abbia frequentato il corso sarà in grado di approfondire le proprie conoscenze in materia di sistemi di calcolo ad alte prestazioni attraverso la consultazione autonoma di testi specialistici, riviste scientifiche o divulgative, anche al di fuori degli argomenti trattati strettamente a lezione, al fine di affrontare efficacemente l’inserimento nel mondo del lavoro o intraprendere percorsi di formazione successivi.
Prerequisiti
- - -
Contenuti dell'insegnamento
1. Informatica Teorica
2. Calcolo Parallelo
3. Calcolo Quantistico
Programma esteso
1. Informatica Teorica (8 ore)
1.1. Richiami di teoria dell'informazione; 1.2. Automi e calcolabilità; 1.3. Complessità computazionale
2. Calcolo Parallelo (20 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. Calcolo Quantistico (20 ore)
3.1. Cenni storici, prospettive a breve e lungo termine; 3.2. Richiami di algebra lineare; 3.3. Postulati della meccanica quantistica; 3.4. Quantum bit; 3.5. Modello di calcolo a circuiti quantistici; 3.6. Architetture dei computer quantistici; 3.7. Algoritmi quantistici; 3.8. Crittografia quantistica; 3.9. Quantum Internet
Bibliografia
- M. Sipser, Introduction to the Theory of Computation, Cengage Learning, 2013
- E. Aubanel, Elements of Parallel Computing, CRC Press, 2017
- M. Nielsen, I. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, 2010
Metodi didattici
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, programmazione di computer quantistici, simulazione di reti quantistiche. 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 online.
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
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 pratico (sviluppo di software) su uno dei seguenti temi:
- calcolo parallelo
- calcolo quantistico
E' 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-30. I due punteggi vengono mediati a formare il voto finale. Non sono previste prove in itinere.
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
Questo insegnamento concorre alla realizzazione degli obiettivi ONU dell'Agenda 2030 per lo Sviluppo Sostenibile