QUANTUM COMPUTER PROGRAMMING

Anno accademico 2024/2025 - Docente: SIMONE FARO

Risultati di apprendimento attesi

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 e del notebook Jupyter.
Elementi di matematica discreta e di algebra lineare e di analisi matematica, oltre a competenze di base di programmazione

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 Quantum Computer Programming offre una solida introduzione agli algoritmi quantistici, con un approccio orientato all'informatica e alla programmazione. È progettato per studenti che abbiano familiarità con i concetti fondamentali dell'algebra lineare, come vettori e matrici, senza però richiedere conoscenze pregresse in meccanica quantistica o teoria quantistica. Il corso pone particolare enfasi sulla comprensione degli algoritmi quantistici attraverso strumenti matematici familiari agli informatici, evitando complessità legate alla notazione e ai concetti fisici della meccanica quantistica.

Dopo una revisione dei concetti fondamentali di algebra lineare rilevanti per la computazione quantistica, il corso introduce le principali porte logiche quantistiche e sviluppa i calcoli necessari per comprendere e implementare algoritmi come quelli di Deutsch, Jozsa, Simon, e Grover. Verranno illustrati sia gli aspetti teorici sia le applicazioni pratiche, mantenendo le dimostrazioni matematiche concise e accessibili.

A livello pratico, il corso introduce la piattaforma Qiskit, fornendo agli studenti gli strumenti necessari per programmare e testare algoritmi su veri dispositivi quantistici. Particolare attenzione sarà data all’implementazione dell'algoritmo di ricerca di Grover, utilizzando Qiskit per sperimentazioni su hardware quantistici, permettendo agli studenti di rafforzare le loro competenze attraverso applicazioni reali.

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.

Per l'attribuzione del voto finale si seguiranno di norma i seguenti criteri:
- non approvato: lo studente non ha acquisito i concetti di base e non è in grado di svolgere gli esercizi.
- 18-23: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di esposizione e di collegamento dei contenuti sono modeste, riesce a risolvere semplici esercizi.
- 24-27:  lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di esposizione e di collegamento dei contenuti sono buone,  risolve gli esercizi con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di esporli compiutamente e di collegarli con spirito critico; risolve gli esercizi in modo completo e senza errori.

Gli studenti con disabilità e/o DSA dovranno contattare con sufficiente anticipo rispetto alla data dell'esame il docente, il referente CInAP del DMI (prof.ssa Daniele) e il CInAP per comunicare che intendono sostenere l'esame fruendo delle opportune misure compensative.

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.