Hello and welcome to my new course The Dummies guide to Practical Quantum Computing with IBM Qiskit. Our current classical computing technology is based on bits or binary digits 1 and 0 . 1 for ON and 0 OFF. Even though it have two states, a bit can exist in only one state at a time. Just like a coin having two faces head and tail.
NOTE: In classical computers a programmer can simply WRITE HIGH LEVEL CODE AND RUN it. But for Quantum Computers we have to DESIGN CIRCUITS for performing specific tasks.
Quantum computing concept is entirely different from classical one. It use the quantum mechanical property of tiny sub atomic particles like electrons to perform computation. Instead of 1 and 0, a qubit or quantum bit uses the spin position 'up' and 'down' of electrons.
But unlike bits, qubits can exist in both state simultaneously. Like a coin keeps on spinning, we could say it is having equal probability for both head and tail. Or it is both head and tail at the same time.
For example consider an 1 bit calculation of finding the best path. 0 means right and 1 means left. A classical computer with a single bit have to first set bit to 0 to go to left path and later 1 to go to right path to find the best path. But a quantum computer with a single qubit can go through both the path simultaneously and arrive at a solution in just only half the time.
As the number of qubits increases, this speed increases exponentially compared to classical computers. Computations like data analytic, artificial intelligence which require large parallel processing ability can perform calculations in matter of milli-seconds where it now takes ages to complete.
Even though its not going to replace our laptops or mobile phones, Quantum computers will be able to solve these road blocks of traditional computers in data processing. Recently Google announced it has a quantum computer that is 100 million times faster than any classical computer in its lab.
The first section of our course from sessions 1 to 6, we are learning essential details about quantum mechanics, and quantum bits which will start with an introduction to quantum mechanics. We will try to have a quick understanding about the difference between quantum mechanics and classical physics, dual nature of particles, double slit experiment, superposition, quantum entanglement etc in the most simplest way of explanation.
In the next session we will discuss about the difference between classical bits and quantum bits called qubits. Creating, representing and processing a classical bit. Then how a qubit is generated, what's inside the qubit, how data is represented in qubit and what makes it faster than classical bits.
Then we will see in details how a qubit is created and how its retaining its information. We will also discuss the structure of a quantum computer and the way qubits are dealt within it.
Then we will learn about scalars and vectors. How vectors and matrices are used to represent the state of a quantum bit. About representing the qubit as Ket vectors and matrices. We will also learn basic matrix operations.
After learning about classical bits and qubits, we can now proceed with gates. At first we will learn about classical gates, its working and also different types of classical gates and their truth tables.
In the next session, we will learn about the popular quantum frameworks by leading companies researching on quantum computers, their merits and demerits.
Having all concepts clear, now we can proceed with the practical part of our course. We will at first setup our computer by installing python environment. Its made easy by installing python distribution called anaconda. Then we will proceed with installing and testing qiskit, the quantum framework by IBM
Once we have qiskit in our computer and the quantum simulator running, we will be coding our first quantum circuit using the simple quantum gate called the Pauli x gate. Later we will try customizing the input and output to the Pauli x gate and verify the operations.
Once we verified in simulator, its time we can try that in a real quantum computer. IBM provides access to their number of quantum computers located in research facilities around the world. Using IBM quantum experience interface we can simply create our Pauli x gate circuit to work in a real quantum computer and get output.
Then we will check how we can represent matrices as state vectors using dirac notation. We will see how Pauli x gate matrices will be represented as a state vector.
Similarly we will proceed with Pauli Y gate. We will check the state vector and try with the operations in our qiskit simulator at first and then implement it in the IBM real quantum computer.
Like that, another gate called the Pauli Z gate. For this one also we will learn about the operations in our qiskit simulator at first and then implement it in real quantum computer.
In the next session, we will learn about the Eigen value and Eigen vectors of our already learnt Pauli x, y and z gates.
After that, we will learn about a new gate called as the Hadamard gate or the H gate. This gate is capable of generating superposition from a classical qubit. We will have an introduction about the operations of H gate. Then we will implement the H gate in our qiskit simulator. We will check the bloch sphere and histogram representation using qiskit.
Using H gate we will also try creating few custom circuits in which we will try to replicate an X gate operations only using the H and Z gates. In the next circuit we will
check the phenomenon of collapsing the superposition when we measure the qubit.
Then we will try the Hadamard gate in an IBM quantum computer.
After H gate we will take few quick sessions dealing with few more gates. The first one called as the R Phi gate. Then we will check two more gates called as the S and T gates. And finally will deal with the U and I gates. We will check the transition matrix and operations of those gates.
Those were gates with single qubit operations. Now we will proceed with gates that are capable of multi-qubit operations. Before that, we will learn about representing multi-qubits and its states. We will be using a package called qiskit-notebook for representing the multi-qiskit state vector.
At first we will try to create a multi-qubit circuit using single qubit gates. At first we will try with X and H gates combined to form the circuit. And later we will try using two qubits and a single gate.
After that we will proceed with a real multi-qubit gate called as CNOT gate or the Controlled NOT gate. We will learn more about CNOT gate, the truth table and its operations. At first we will try the CNOT gate with classical qubits. We will implement it in qiskit. Later we will try the CNOT gate with only one superposition qubit and after that with both superposition qubits.
Then we will proceed with implementing CNOT gate in the Real quantum computer from IBM.
We can also create identity circuits using CNOT gate. Using these equivalence circuit we can mimic operations of other gates which cannot be performed in a real quantum computer.
At first we will create an identity circuit using a CNOT gate wrapped with H gates so that it will act like a CNOT gate placed in opposite direction.
Then we will try another equivalence circuit using a CNOT gate in between Hadamard gates which will generate operations of a Controlled Z gate or CZ gate.
Like that we will create an equivalence circuit for another theoretical gate called as the CY gate or the Controlled Y gate.
There is another gate called as the SWAP gate. Like the name indicates, it can swap the qubit states between each other. We will also create circuit identity or circuit equivalence for swap gate.
Similarly for another gate called the Tiffoli gate, we will create circuit identity or circuit equivalence for tiffoli gate and we will implement that circuit in qiskit.
And that's all with gates, we will now proceed with learning an important algorithm called as the Deutsch–Jozsa algorithm or DJ algorithm which demonstrates quantum parallelism.
The underlying mathematics of this algorithm is very complex and we are just trying learn it in just a very shallow manner. At first we will see the DJ problem that the algorithm is dealing with and later we will learn about the algorithm design. We will implement it in qiskit later and will verify the results.
We will then proceed with discussing about two interesting technologies.
The first one called as QKD or Quantum key distribution which utilizes the unique properties of quantum systems to generate and distribute cryptographic key. Quantum cryptography also uses the same physics principles to communicate virtually non-hackable data over a dedicated communications link.
Then we will discuss about Quantum tele-portation which is a technique for transferring quantum information from a sender at one location to a receiver some distance away.
Overall this will be a nice course for a beginner who are fascinated about quantum computing and want to learn more about quantum computing. Actual quantum computing is all about complex boring mathematics and formulas which I have tried my maximum to avoid convert it in a very simple way to make it understandable to a beginner.
In this course we are strictly following the IBM Qiskit documentation and text book. Almost all of the illustrations and examples used in this course are from the IBM qiskit documentation website which you may refer for further learning from this point.
Quantum computers could help the development of new breakthroughs in science, medications, machine learning, material science, finance which helps mankind to become the best civilization in the whole universe. In fact quantum computer is so powerful that no one knows how to use its true potential and till now no quantum algorithm is perfect. The hardware and code are still in its development stage providing great opportunities in future for quantum computing professionals.
That's all about the topics which are currently included in this quick course. The code, and jupyter notebook files used in this course has been uploaded and shared in a folder. I will include the link to download them in the last session or the resource section of this course. You are free to use the code in your projects with no questions asked.
Also after completing this course, you will be provided with a course completion certificate which will add value to your portfolio.
So that's all for now, see you soon in the class room. Happy learning and have a great time.
References and Credits
IBM's qiskit - learn
IBM's qiskit - textbook
IBM's qiskit - documentation
blog cloudflare - the-quantum-menace
wikipedia - Quantum_logic_gate
jonathan-hui - qc-quantum-computing-series-10ddd7977abd
youtube - Coding with Qiskit
youtube - Veritasium, a much simplified explanation to every complex quantum concepts
Very much inspired by works and articles of Professor Andrea Morello. Quantum Engineering, University of New South Wales