QUANTUM COMPUTER PROGRAMMING
Academic Year 2024/2025 - Teacher: SIMONE FAROExpected 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
Subjects | Text References | |
---|---|---|
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) |