QUANTUM COMPUTER PROGRAMMING

Academic Year 2024/2025 - Teacher: SIMONE FARO

Expected Learning Outcomes

Knowledge and understanding: knowledge of the main methodologies for the design of quantum algorithms will be acquired. Specifically, the knowledge related to the basics of quantum computation, to the main quantum circuits, and to basic quantum algorithms will be acquired. The techniques for the complexity analysis of quantum algorithms and their programming through dedicated languages ​​will be acquired. The Qiskit development system will be used as the main tool to present the application of the constructs and the implementations of the studied algorithms.

Applying knowledge and understanding: the ability to solve simple problems that require the design and analysis of algorithmic solutions in the field of quantum computation will be acquired.

Making judgments: the student will be able to evaluate the applicability of a quantum solution for solving a computational problem as well as acquire the ability to evaluate a quantum algorithm in terms of efficiency and possibility of reuse.

Communication skills: the necessary communication skills and adequate expressive appropriateness will be acquired in communicating problems inherent in algorithmic studies in the field of quantum computing, even to non-expert interlocutors.

Learning skills: the student will have the ability to adapt the knowledge acquired also to new contexts, as well as to update himself by consulting the specialized sources of the quantum computing sector.

Course Structure

Frontal lessons.
If the teaching is given in a mixed or remote way, the necessary changes may be introduced with respect to what was previously stated, in order to comply with the program envisaged and reported in the syllabus.

Required Prerequisites

Basic knowledge of programming in Python and the Jupyter notebook.

Elements of discrete mathematics and linear algebra, programming and mathematical analysis.

Detailed Course Content

The Quantum Computer Programming course provides a comprehensive introduction to quantum algorithms with a focus on computer science and programming. It is designed for students familiar with fundamental linear algebra concepts, such as vectors and matrices, without requiring prior knowledge of quantum mechanics or quantum theory. The course emphasizes understanding quantum algorithms through mathematical tools familiar to computer scientists, avoiding the complexities of quantum mechanics notation and physical concepts.

After a review of essential linear algebra concepts relevant to quantum computing, the course introduces key quantum gates and develops the necessary calculations to understand and implement algorithms such as Deutsch, Jozsa, Simon, and Grover. Both theoretical aspects and practical applications will be covered, with concise and accessible mathematical demonstrations.

An advanced module will explore key aspects of quantum mechanics with significant implications for computational theory, including Bell's theorems, the no-cloning theorem, and the uncertainty principle. These topics will provide students with a deeper understanding of the theoretical foundations of quantum computing.

On the practical side, the course introduces the Qiskit platform, equipping students with the tools to program and test algorithms on real quantum devices. Particular attention will be given to the implementation of Grover’s search algorithm, using Qiskit for experimentation on quantum hardware, allowing students to strengthen their skills through real-world applications.

Textbook Information

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. Online available at : http://community.qiskit.org/textbook

Course Planning

 SubjectsText References
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)

Learning Assessment

Learning Assessment Procedures

The course examination is divided into two parts: an initial written laboratory test and a subsequent oral test. These tests may take place electronically, should conditions require it. The oral test may take place on the same day as the written test or a few days after it. The purpose of this test will be to assess in more detail the student's preparation, his or her ability to reason with regard to the topics covered in class, as well as his or her property of language. The evaluation of the oral test should be understood as supplementing the grade obtained in the written test and not increasing it.