Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative alle principali metodologie per la progettazione di algoritmi quantistici. Nello specifico saranno acquisite le conoscenze relative alle basi della computazione quantistica, ai principali circuiti quantistici, e agli algoritmi quantistici di base. Saranno acquisite le tecniche per l'analisi di complessità di algoritmi quantistici e la loro programmazione attraverso linguaggi dedicati. Il sistema di sviluppo Qiskit verrà usato come strumento principale per presentare l'applicazione dei costrutti e le implementazioni degli algoritmi studiati.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): saranno acquisite le capacità di risolvere semplici problemi che richiedono la progettazione e l'analisi di soluzioni algoritmiche nel campo della computazione quantistica.
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare l'applicabilità di una soluzione quantistica per la risoluzione di un problema computazione oltre ad acquisire la capacità di valutare un algoritmo quantistico in termini di efficienza e possibilità di riutilizzo.
Abilità comunicative (communication skills): saranno acquisite le necessarie abilità comunicative ed un'adeguata appropriatezza espressiva nella comunicazione di problematiche inerenti gli studi algoritmici nel campo della computazione quantistica, anche ad interlocutori non esperti.
Capacità di apprendimento (learning skills): lo studente avrà la capacita di adattare le conoscenze acquisite anche a nuovi contesti, nonché di aggiornarsi attraverso la consultazione delle fonti specialistiche del settore del quantum computing.
Lezioni frontali.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Conoscenze di base della programmazione in Python.
Elementi di matematica discreta e di algebra lineare, di programmazione I e II, e di analisi matematica.
Per una piena comprensione degli argomenti del corso e delle tecniche illustrate, la frequenza delle lezioni è fortemente consigliata.
Il corso fornisce un'introduzione agli algoritmi quantistici, coprendo molti algoritmi chiave. Richiede un background minimo e non presuppone alcuna conoscenza della teoria quantistica o della meccanica quantistica. Il corso presenta il calcolo quantistico in termini di algebra lineare elementare assumendo che il lettore abbia una certa familiarità con i vettori, le matrici e le loro proprietà di base, ma offrendo una rassegna di tutto il materiale rilevante dell'algebra lineare. Enfatizzando il calcolo e gli algoritmi piuttosto che la fisica, questo corso rende gli algoritmi quantistici accessibili a studenti e ricercatori in informatica senza le complicazioni della notazione della meccanica quantistica, dei concetti fisici e delle questioni filosofiche.
Dopo aver spiegato lo sviluppo di operazioni e calcoli quantistici basati sull'algebra lineare, il corso presenta le principali porte quantistiche e algoritmi quantistici, dagli algoritmi di Deutsch, Jozsa e Simon, passando per Shor, fino all'algoritmo di ricerca di Grover. Le dimostrazioni matematiche sono generalmente brevi e dirette.
Il corso introduce anche i principi della programmazione quantistica attraverso l'uso dell'SDK Qiskit, che consente agli utenti di eseguire esperimenti su dispositivi quantistici reali all'avanguardia. Il corso fornisce agli studenti gli strumenti per utilizzare Qiskit nella sperimentazone degli algoritmi su hardware quantistici e utilizza tali strumenti per rafforzare la loro comprensione.
1) Quantum Algorithms via Linear Algebra, di Richard J. Lipton e Kenneth W. Regan. The MIT Press Cambridge, Massachusetts London, England.
2) Qiskit Textbook, Learn Quantum Computation Using Qiskit, 2020. Disponibile online: http://community.qiskit.org/textbook
Gli studenti avranno a disposizione ulteriore materiale didattico fornito dal docente oltre ai codici realizzati a lezione.
Argomenti | Riferimenti testi | |
1 | Il modello di computazione quantistica | Cap. 1 di 1) |
2 | Numeri e stringhe | Cap. 2 di 1) |
3 | Elementi di Algebra Lineare | Cap. 3 di 1) |
4 | Funzioni booleane e fattibilità | Cap. 4 di 1) |
5 | Elementi di programmazione in Qiskit | Cap. 1-2 di 2) |
6 | Circuiti Quantistici | Cap. 3.1 of 2) |
7 | Matrici speciali | Cap. 5 di 1) |
8 | Quantum Oracles | Cap. 3.2 di 2) |
9 | Procedure ausiliarie | Cap. 6 di 1) |
10 | Algoritmi quantistici elementari | Cap. 7 di 1) |
11 | Quantum Teleportation | Cap. 3.10 di 2) |
12 | Superdense Coding | Cap. 3.11 di 2) |
13 | Algoritmo di Deutsch | Cap. 8 di 1) |
14 | Algoritmo di Deutsch-Jozsa | Cap. 9 di 1) e Cap. 3.2 di 2) |
15 | Algoritmo di Simon | Cap. 10 di 1) 3 Cap. 3.4 di 2) |
16 | Algoritmo di Shor | Cap. 11-12 di 1) e Cap. 3.5-3.6-3.7 di 2) |
17 | Algoritmo di Grover | Cap. 13 di 1) e Cap. 3.8 di 2) |
La prova di esame del corso è suddivisa in due parti: una prima prova scritta di laboratorio e una successiva prova orale. Tali prove potranno avere luogo per via telematica, qualora le condizioni lo dovessero richiedere. La prova orale potrà svolgersi il giorno stesso in cui è stata svolta la prova scritta o a distanza di pochi giorni da esso. Tale prova avrà lo scopo di valutare più nel dettaglio la preparazione dello studente, la sua capacità di ragionamento relativamente agli argomenti trattati a lezione, nonché la sua proprietà di linguaggio. La valutazione della prova orale si dovrà intendere ad integrazione del voto ottenuto nella prova scritta e non a suo incremento.
Durante le lezioni verranno svolti degli esercizi simili a quelli che gli studenti dovranno affrontare nel loro esame finale. Ulteriori esercizi verranno resi disponibili nel corso delle lezioni.