This is the official repository of the course "Quantum Computing: A Practical Perspective", offered by NECSTLab @ Politecnico di Milano, in collaboration with MathWorks.
This course aims to introduce the basic notions to design, develop, and analyze algorithms for quantum computers. In the last decades, the state of the art has produced an extraordinary improvement for quantum architectures, that are able to tackle complex problems, achieving extremely reduced execution time if compared to classical computation. Yet, current limits regarding the number of available qubits and noise intensity strongly limit their potential. Therefore, a quantum engineer needs to know how to design algorithms, identify their bottlenecks, and adopt effective solutions to mitigate noise.This course aims to provide students with the necessary notions to use MathWorks MATLAB Support Package for Quantum Computing, in order to design quantum algorithms, simulate them locally, run them on real quantum hardware through cloud-based services, visualize and analyze their circuits and their output. Students will see practical examples of notorious algorithms, such as the mathematical optimization frameworks known as QUBO. They will also be introduced to error mitigation and correction techniques. At the end of the course, students will work on a project, aiming to consider real use cases and strengthen their capabilities in quantum computation.
First Edition: March to April 2024
Second Edition: November to December 2024
Third Edition: March to April 2025
Each folder contains the slides and the code used in the corresponding lecture. Feel free to use them to learn and develop novel quantum algorithms!
Furthermore, we provide novel projects to further dive into the amazing world of quantum computing!
Folder | Topic | Example: File | Time | |
---|---|---|---|---|
Lecture 1 | Theory Recap on Quantum Computing | Lecture1.pdf | - | about 2 hrs |
Lecture 2 | Initial Setup and first experiments | Lecture2.pdf | - Quantum Circuits 1: lesson2_first_steps.mlx - Quantum Circuits 2: lesson2_basic_examples.mlx - Quantum Fourier Transform: lesson2_qft.mlx - Quantum Teleportation: lesson2_teleportation.mlx |
about 2 hrs |
Lecture 3 | Grover's Algorithm | Lecture3.pdf | - Graph Coloring: lesson3.mlx (*) | about 2 hrs |
Lecture 4 | Combinatorial Optimization (QUBO) | Lecture4.pdf | - QUBO: lesson4_basic_examples.mlx - Feature Selection: lesson4_fs.mlx (*) - Traveling Salesperson Problem: lesson4_tsp.mlx (*) - Capacitated Vehicle Routing Problem: lesson4_cvrp.mlx (*) |
about 2 hrs |
Lecture 5 | VQE, QMC and QNN Quantum Machine Learning |
Lecture5.pdf | - Variational Quantum Eigensolver: lesson5_vqe.mlx (*) - Quantum Monte Carlo: lesson5_qmc.mlx (*) - Quantum Neural Network for XOR problem: lesson5_qnn.mlx (*) |
about 2 hrs |
Lecture 6 | Quantum Error Correction and mitigation | Lecture6.pdf | - 9-Qubit Shor Code: lesson6.mlx | about 2 hrs |
Projects | MATLAB Quantum Computing Projects | - | - Milano Metro Stops: Milano Metro Stops - QAOA: QAOA - Bernstein-Vazirani: Bernstein-Vazirani - Bernstein-Vazirani Attack: Bernstein-Vazirani Attack - QEC Repetition Codes: QEC Repetition Codes - QKD BB84: QKD BB84 - Shor's Algorithm: Shor's Algorithm |
- |
(*) Based on MathWorks documentation or web sites.
For Projects, credits to: Matteo Rossi, Giovanni Stanghellini, Pietro Lanna, Simone Pellegatta, Giulia Blanchetti, Marco Venere
Every Live Script has been executed with MATLAB R2024b.
A special thanks to MathWorks, which has supported the Quantum Computing with MATLAB Curriculum Development Project.
In case you have any doubts, feel free to reach out:
Marco Venere - [email protected]