This repository contains the materials for the "Q# Language" workshop, presented at 2019 Quantum Languages Design and Implementation summer school in Verona, Italy.
Q# (Q-sharp) is a domain-specific and open-sourced programming language, part of Microsoft's Quantum Development Kit (QDK), used for expressing quantum algorithms. It is to be used for writing subroutines that execute on an adjunct quantum processing unit (QPU), under the control of a classical host program and computer.
Most of the exercises for this workshop are taken from the Quantum Katas. The Quantum Katas are a series of self-paced tutorials aimed at teaching you elements of quantum computing and Q# programming at the same time. The entire set of quantum katas are available online as an open-source project at https://github.com/microsoft/QuantumKatas.
Some other exercises are taken from Microsoft's Quantum GitHub repository. This open source repository has a vast library of programs that show how to implement quantum algorithms using Q#.
- Introduction. This Jupyter Notebook uses the Q# Jupyter kernel to introduce the core elements of the Q# language.
- Basic quantum computing gates. This kata focuses on main single-qubit and multi-qubit gates used in quantum computing.
- Deutsch–Jozsa algorithm. This tutorial teaches you to implement classical functions and equivalent quantum oracles, discusses the classical solution to the Deutsch–Jozsa problem, and introduces the Deutsch and Deutsch–Jozsa algorithms.
- Teleportation. This kata walks you through the standard teleportation protocol and several variations.
- Grover's algorithm. This kata introduces Grover's search algorithm and writing quantum oracles to be used with it.
- Solving SAT problems using Grover's algorithm. This kata continues the exploration of Grover's search algorithm, using SAT problems as an example. It covers implementing quantum oracles based on the problem description instead of a hard-coded answer and using Grover's algorithm to solve problems with unknown number of solutions.
- Phase estimation. This kata covers phase estimation algorithms.
- Python Interop. Shows how to perform a chemistry simulation of H2 using the local quantum simulator and display the results graphically using Electron.
- Numerics Library. Provides a samples on how to incorporate Q# programs into a C# classical host. In particular, it shows how to leverage Q# numerics library to create your own ModAdder.
- Python Interop. Provides a couple of samples on how to incorporate Q# programs into Python scripts. The samples show the integration from both, a Python script and a Python Jupyter notebook.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.