Welcome Qiskitters to the Quantum Information Science Kit (Qiskit for short)!

The easiest way to get started is to use the Binder image, which lets you use the notebooks via the web. This means that you don't need to download or install anything, but is also means that you should not insert any private information into the notebooks (such as your API key). We recommend that after you are done using mybinder that you regenerate your token.

The tutorials can be downloaded by clicking here and to set them up follow the installation instructions here.

We have organized the tutorials into two sections:

This tutorial aims to explain how to use Qiskit. We assume you have installed Qiskit if not please look at qiskit.org or the install documentation.

We've collected a core reference set of notebooks in this section outlining the features of Qiskit. We will be keeping them up to date with the latest Qiskit version, currently 0.6. The focus of this section will be how to use qiskit and not so much on teaching you about quantum computing. For those interested in learning about quantum computing we recommend the awesome notebooks in the community section.

Qiskit is made up of four elements: Terra, Aer, Ignis, and Aqua with each element having its own goal and together they make the full Qiskit framework.

A central goal of Qiskit Terra is to build a software stack that makes it easy for anyone to use quantum computers. To get developers and researchers going we have a set of tutorials on the basics.

- Getting started with Qiskit Terra - how to use Qiskit Terra
- The IBM Q provider - Working with the IBM Q provider
- Qiskit visualizations - illustrates the different visualizations of Qiskit
- 3rd Party Provider - illustrate how to add external backends to Qiskit

Terra, the ‘earth’ element, is the foundation on which the rest of the software lies. Terra provides a bedrock for composing quantum programs at the level of circuits and pulses, to optimize them for the constraints of a particular device, and to manage the execution of batches of experiments on remote-access devices. Terra defines the interfaces for a desirable end-user experience, as well as the efficient handling of layers of optimization, pulse scheduling and backend communication.

- Summary of Quantum operations - list of quantum operations (gates, reset, measurements) in Qiskit Terra
- Using the QuantumCircuit object
- Compiling and executing a quantum program
- The Transpiler

Aer, the ‘air’ element, permeates all Qiskit elements. To really speed up development of quantum computers we need better simulators, emulators and debuggers. Aer will help us understand the limits of classical processors by demonstrating to what extent they can mimic quantum computation. Furthermore, we can use Aer to verify that current and near-future quantum computers function correctly. This can be done by stretching the limits of simulation to accommodate 50+ qubits with reasonably high depth, and by simulating the effects of realistic noise on the computation.

- Simulating the statevector
- Simulating the unitary
- Simulating with noise
- Using the Clifford simulator

Ignis, the ‘fire’ element, is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. While we have already released parts of this element as part of libraries in Terra, an official stand-alone release will come soon. For now we have some tutorials for you to explore.

- Relaxation and decoherence - how to measure coherence times on the real quantum hardware
- Quantum state tomography - how to identify a quantum state using state tomography, in which the state is prepared repeatedly and measured in different bases
- Quantum process tomography - using quantum process tomography to reconstruct the behavior of a quantum process and measure its fidelity, i.e., how closely it matches the ideal version
- Randomized benchmarking

Aqua, the ‘water’ element, is the element of life. To make quantum computing live up to its expectations, we need to find real-world applications. Aqua is where algorithms for NISQ computers are built. These algorithms can be used to build applications for quantum computing. Aqua is accessible to domain experts in chemistry, optimization or AI, who want to explore the benefits of using quantum computers as accelerators for specific computational tasks, without needing to worry about how to translate the problem into the language of quantum machines.

- Chemistry - using variational quantum eigensolver to experiment with molecular ground-state energy on a quantum computer
- Optimization - using variational quantum eigensolver to experiment with optimization problems (maxcut and traveling salesman problem) on a quantum computer
- Artificial Intelligence - using quantum-enhanced support vector machine to experiment with classification problems on a quantum computer
- Finance - using variational quantum eigensolver to optimize portfolio on a quantum computer

Teaching quantum and qiskit has so many different paths of learning. We love our community and we love the contributions so keep them coming. Because Qiskit is changing so much we cant keep this updated (we will try our best) but there are some great notebooks in here.

Learn from the community how to write your first quantum program.

Learn quantum computing by having fun. How is there a better way!

Learn about and how to program quantum circuits using Qiskit Terra.

Learn Qiskit from the textbook quantum algorithms, like Shor, Grover, and Deutsch-Jozsa.

Learn how to develop and the fundamentals of quantum applications using Qiskit Aqua

Learn from the great contributions to the Teach Me Qiskit Award.

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.