This is a self-paced introductory course to learn quantum computer programming . The course is specifically designed for broader group of students to introduce quantum computer programming without requiring any previous knowledge of quantum physics. The required knowledge of linear algebra and quantum mechanics is covered in the course. All the algorithms are not just explained in detail but also implemented using QISKIT on IBM’s quantum computers.  The course material is based on the book by Nielson & Chuang, IBM’s 2020 summer course on quantum computing, and qiskit textbook.

Course Instructor: Muhammad Faryad

Share on facebook
Share on twitter
Share on linkedin
1- Introduction: quantum computers, qubits, quantum gates, desired properties of qubits, applications
2- Linear algebra: Vector spaces, basis, inner product, outer product, tensor product, linear operators
3- Quantum Mechanics for Quantum Computing: Review of postulates, Bloch sphere, Single qubit states and gates, superpositon
4- Introduction to Numpy and Qiskit using Jupyter Notebook, Qiskit installation, importing packages, loops and decisions in python, Numpy arrays
5-Two Qubit States and Gates, Bell States, Entanglement, CNOT gate, Phase oracles, Phase kickback, Entanglement generation
6- Lab session on writing quantum programs, Bell state generation algorithm, Phase oracles, Simulating quantum algorithms, Qsphere
7- Detailed exposure of one and two qubit gates and states, Examples of Dirac’s notation for quantum computing, Computational Basis,  Orthonormality, Pauli Gates, Hadamard and Phase Gates
8- Teleportation Algorithm: Theory and implementation 
9-Deutsch–Josza Algorithm: Quantum Speedup, Hadamard Transform, Oracle
10- Lab Session on Deutsch–Josza Algorithm, Running a quantum circuit on Simulator
11- How to run quantum program on IBM’s quantum computer, Token copying, linking your notebook with IBMQ
12- Bernstein–Vazirani Algorithm: Importance, Polynomial speedup, oracle to implement secret bit string
13- Implementation of Bernstein–Vazirani Algorithm on Qiskit, general phase oracle, running on IBMQ
14- Grover search algorithm: Problem definition, Amplitude amplification, Grover oracle, diffuser, multiple solutions in the search space
15- General scheme for designing phase oracles, Oracle for Grover search, Oracles using Toffoli gates
16- Implementing Grover Algorithm using simulator and IBMQ
17- Measurement Error Mitigation: Theory
18- Qiskit demo of Measurement Error Mitigation on Deutsch Josza and Bernstein Vazirani Algorithm using Noise Model and on IBMQ
19- Simon’s problem, Simon’s Algorithm, and Oracle for Simon’s Algorithm
20- Implementation of Simon’s Algorithm and Oracle on Qiskit
21- Phase oracles and Grover with different initialization (Solution of Midterm Exam)
22- Quantum Fourier Transform, Inverse Quantum Fourier Transform
23- Implementation of Quantum Fourier and Inverse Fourier Transform in qiskit
24- Theory and Implementation of Quantum Phase Estimation, Unitary operators, Eigenvalues of Unitary Operators
25- Theory and Implementation of Quantum Counting Algorithm
26- Quantum Search as Quantum Simulation, Hamiltonian Simulation
27- Homework 1


28- Homework 2


29- Midterm Exam