QUANTUM COMPUTER PROGRAMMING

Anno accademico 2021/2022 - 2° anno
Docente: Simone FARO
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

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.


Modalità di svolgimento dell'insegnamento

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.


Prerequisiti richiesti

Conoscenze di base della programmazione in Python.
Elementi di matematica discreta e di algebra lineare, di programmazione I e II, e di analisi matematica.


Frequenza lezioni

Per una piena comprensione degli argomenti del corso e delle tecniche illustrate, la frequenza delle lezioni è fortemente consigliata.


Contenuti del corso

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.


Testi di riferimento

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



Programmazione del corso

 ArgomentiRiferimenti testi
1Il modello di computazione quantisticaCap. 1 di 1) 
2Numeri e stringheCap. 2 di 1) 
3Elementi di Algebra LineareCap. 3 di 1) 
4Funzioni booleane e fattibilitàCap. 4 di 1) 
5Elementi di programmazione in QiskitCap. 1-2 di 2) 
6Circuiti QuantisticiCap. 3.1 of 2) 
7Matrici specialiCap. 5 di 1) 
8Quantum OraclesCap. 3.2 di 2) 
9Procedure ausiliarieCap. 6 di 1) 
10Algoritmi quantistici elementariCap. 7 di 1) 
11Quantum TeleportationCap. 3.10 di 2) 
12Superdense CodingCap. 3.11 di 2) 
13Algoritmo di DeutschCap. 8 di 1) 
14Algoritmo di Deutsch-JozsaCap. 9 di 1) e Cap. 3.2 di 2) 
15Algoritmo di SimonCap. 10 di 1) 3 Cap. 3.4 di 2) 
16Algoritmo di ShorCap. 11-12 di 1) e Cap. 3.5-3.6-3.7 di 2) 
17Algoritmo di GroverCap. 13 di 1) e Cap. 3.8 di 2) 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

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.


Esempi di domande e/o esercizi frequenti

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.