Learn quantum computing with the Quantum Katas
The Quantum Katas is an open-source collection of self-paced tutorials and sets of programming exercises aimed at teaching you elements of quantum computing and Q# programming at the same time.
Learning by Doing
The tutorials and exercises collected in this project emphasize learning by doing: they offer programming tasks that cover certain topics which progress from very simple to quite challenging. Each task asks you to fill in some code; the first tasks might require just one line, and the later ones might require a sizable fragment of code.
Most importantly, the katas include testing frameworks that sets up, runs and validates the solutions to the tasks. This allows you to get immediate feedback on your solution and to reconsider your approach if it is incorrect.
You can use the Katas for learning in your environment of choice:
- Jupyter Notebooks online within the Binder environment
- Jupyter Notebooks running on your local machine
- Visual Studio
- Visual Studio Code
What can I learn with the Quantum Katas?
Here is a summary of the main topics covered in the Quantum Katas. We recommend you to follow this learning path in the beginning to make sure you have a solid grasp on the fundamental concepts of quantum computing. Of course, you can skip the topics you're comfortable with, such as complex arithmetic, and learn the algorithms in any order you want.
Introduction to quantum computing concepts
- Complex arithmetic
- Linear algebra
- The concept of a qubit
- Single-qubit quantum gates
- Multi-qubit systems
- Multi-qubit gates
Quantum computing fundamentals
- Recognizing quantum gates
- Creating quantum superposition
- Distinguishing quantum states using measurements
- Joint measurements
- Quantum teleportation
- Superdense coding
- Deutsch–Jozsa algorithm
- Implementing Grover's search algorithm
- Exploring high-level properties of Grover's search algorithm
- Solving real problems using Grover's algorithm: SAT problems and graph coloring problems
Protocols and libraries
- BB84 protocol for quantum key distribution
- Quantum error correction: bit-flip error correcting code
- Phase estimation
- Quantum arithmetic: building ripple-carry adders