Skip to content

MonitSharma/Quantum-Codebooks

Repository files navigation

←←Back to Homepage

Quantum Computing Resources

Welcome to this repository, which contains comprehensive solutions and walkthroughs for various popular quantum computing packages and platforms. Quantum computing is a rapidly growing field that has the potential to revolutionize a wide range of industries, from finance and healthcare to logistics and machine learning.

The packages and platforms that are covered in this repository include:

( medium articles will be added soon)

Table

Contents

The repository is organized by resource, with each resource having its own subdirectory containing the solutions and walkthroughs. The subdirectories are named after the specific quantum computing package or platform and contain detailed explanations and examples of how to use it. The repository will be regularly updated with new solutions and walkthroughs as new quantum computing packages and platforms are released.

Xanadu Codebook

  • Xanadu: Xanadu is a leading company in the field of quantum computing, providing a full-stack platform for quantum software development. Their platform, "Strawberry Fields" is a powerful tool for creating and running quantum algorithms. It provides a high-level interface for working with quantum systems, making it easy to create and run quantum circuits on real quantum hardware.

Introduction

This folder contains solutions to the introductory module of the Xanadu Quantum Codebook. The solutions are written in python and aim to provide a solid understanding of the concepts of quantum computing.

Algorithms

Introduction to quantum Algorithms

Fourier

In this node, we will change gears and discuss the basics of the classical Discrete Fourier transform (DFT), which has made a significant impact in the field of signal processing for transforming data from the time domain to the frequency domain and back. The DFT is a unitary transformation, which makes it a good candidate for quantum computers

Quantum Phase Estimation

In this module we are going to learn about an algorithm that helps us estimate the eigenvalue of a given unitary operator. The eigenvectors of a unitary operator form an orthonormal basis set. Applying the unitary operator on one of its eigenvectors multiplies it by a global phase (the eigenvalue). For unitary operators, the eigenvalues have magnitude and can be written in the form , where is called the eigenphase corresponding to the eigenvalue.

Shor's algorithm

Working on Shor's algorithm. Modular arithmetic is a fundamental concept of basic mathematics. We say that two integers are equivalent modulo if the difference between them is a multiple of , that is, there exists an integer such that . In order to understand this type of equivalence it is common to work with a "clock"-like picture, which will have hours instead of . We will say that two numbers are equivalent if they mark the same hour on the clock.

G, Grover's algorithm

In module A, we sped up the lock-breaking process by testing states in pairs. This told us when the solution was present, but not which state it was. Our goal now will be to try and figure out the state directly, and our broad strategy will be to start in the uniform superposition and somehow "pump" amplitude from the other states into , so that we measure the solution with high probability. This strategy is called amplitude amplification. Let's start by exploring what happens to amplitudes when we apply the oracle.

H, Hamiltonian simulation

In this module, we'll learn about Hamiltonian Simulations. Fundamentally, quantum computing is different from classical computing because of the physical laws working "under the hood" of the computer. To understand quantum computing in this light, it's useful to treat Nature as a sort of black box. It takes an initial condition as an input, evolves it using physical laws, and outputs experimental data (aka measurements) at the end. We can try to infer the laws of Nature from looking at the pattern of input conditions and output measurements.

E, Error Correction

Introduction to Error Correction

Qiskit Textbook

  • Qiskit: Qiskit is an open-source quantum computing framework that allows users to create, manipulate, and execute quantum programs. It is built on top of popular open-source libraries such as NumPy and Scipy, making it easy for users to get started with quantum computing. With Qiskit, users can build and run quantum programs on a local simulator or on real quantum hardware.

Prerequisites

Learn about the software used to write the Qiskit (Python and Jupyter Notebooks), and set up your environment to reproduce the experiments.

Serial Number Title Links Medium
1 Checking versions and installing Open In Colab Medium
2 Complex Arithmetic Open In Colab Medium
3 A very basic intro to Linear Algebra Open In Colab Medium

Quantum States and Qubits

This chapter introduces the computing concepts that we'll explore in later chapters, then introduces basic quantum concepts.

Serial Number Title Links Medium
1 Atoms of Computation Open In Colab Medium
2 Representing Qubit States Open In Colab Medium
3 Single Qubit Gates Open In Colab Medium

Multiple Qubits and Entanglement

With the basics down, this chapter explores the consequences of these new quantum effects, and sets us up with tools to understand quantum algorithms.

Serial Number Title Links Medium
1 Multiple Qubits and Entanglement Open In Colab Medium
2 Phase Kickback Open In Colab Medium
3 Basic Circuit Identities Open In Colab Medium

Quantum Protocols and Quantum Algorithms

In this chapter, we use quantum effects to build powerful algorithms, starting from simple proof-of-concept algorithms, through to Shor's famous factoring algorithm (and beyond).

Serial Number Title Links Medium
1 Quantum Circuits Open In Colab Medium
2 Deutsch Jozsa Algorithm Open In Colab Medium
3 Bernstein-Vazirani Algorithm Open In Colab Medium
4 Simons Algorithm Open In Colab Medium
5 Quantum Fourier Transform Open In Colab Medium
6 Quantum Phase Estimation Open In Colab Medium

Investigating Quantum Hardware Using Microwave Pulses

In this chapter, we get a level closer to the real quantum machines. Learn about the physics of these devices, and how to program them at the level of microwave pulses.

Serial Number Title Links Medium
1 TBA Open In Colab Medium

Quantum Algorithms for Applications

If algorithms are the solution, then what is the problem? In this chapter, we look at how we can take general algorithms and apply them to more specific situations.

Serial Number Title Links Medium
1 TBA Open In Colab Medium

Investigating Quantum Hardware Using Quantum Circuits

All circuit-based quantum devices share some similar characteristics and challenges. In this chapter, we explore how quantum circuits perform on modern quantum computers, and ways to improve performance.

Serial Number Title Links Medium
1 TBA Open In Colab Medium

QuTiP Codebook

  • QuTiP: QuTiP is an open-source quantum mechanics and optics framework that allows users to simulate the dynamics of open quantum systems. It is built on top of the popular Python numerical library NumPy, and provides a high-level interface for working with quantum systems. QuTiP is particularly useful for simulating the dynamics of open quantum systems and for analyzing the results of quantum experiments.

Visualizations

Serial Number Title Description Links Medium
1 Bloch Sphere Animation Introduction to basic concepts in linear algebra Open In Colab Medium

Google Cirq

  • Cirq: Cirq is an open-source framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. It is designed to be easy to use, with a simple and intuitive syntax, and it is compatible with a wide range of quantum hardware platforms. With Cirq, users can easily create and run quantum circuits on real quantum hardware and analyze the results.
Serial Number Title Description Links Medium
1 Scalars, vectors, matrices and tensors Introduction to basic concepts in linear algebra Open In Colab Medium

Microsoft Q#

  • Microsoft Q#: Microsoft Q# is a domain-specific programming language used for expressing quantum algorithms. It is designed to be used in conjunction with the Microsoft Quantum Development Kit, a set of tools that allows developers to create, test, and run quantum programs on a local machine or in the cloud. Q# is designed to be easy to learn for developers with experience in classical programming, and it provides a wide range of libraries and functionality for working with quantum systems.
Serial Number Title Description Links Medium
1 Scalars, vectors, matrices and tensors Introduction to basic concepts in linear algebra Open In Colab Medium

Getting Started

To use this repository, simply clone it to your local machine using the following command:

git clone https://github.com/MonitSharma/Quantum-Codebooks.git

Contributing

If you would like to contribute to this repository, please submit a pull request. We welcome any additions or improvements to the existing solutions and walkthroughs. We are also open to suggestions for new quantum computing packages and platforms that should be covered in this repository.

Contact

If you have any questions or issues with this repository, please don't hesitate to reach out to us by opening an issue on this repository or contact us via email.

The repository is designed to be a valuable resource for anyone interested in learning about quantum computing and working with quantum computing packages and platforms. Whether you are a quantum computing researcher, a developer looking to build quantum applications, or just someone interested in learning more about quantum computing, this repository has something for you.

We encourage you to explore the solutions and walkthroughs provided in this repository and try them out for yourself. With the resources provided in this repository, you will have everything you need to start working with quantum computing packages and platforms and building your own quantum applications.

Thank you for visiting this repository and we hope you find it useful in your journey to learn about quantum computing.