Welcome to Introduction to Quantum Computing! This repository contains materials and resources for learning the fundamentals of quantum computing, based on authoritative texts and resources in the field.
This course covers the basic concepts of quantum computing, including:
- Quantum bits (qubits) and quantum states
- Quantum gates and circuits
- Quantum algorithms
- Quantum entanglement and superposition
- Practical applications of quantum computing
- Basic understanding of linear algebra
- Familiarity with complex numbers
- Basic programming knowledge (Python recommended)
- Understanding of classical computing concepts
- Module 1: Introduction to Quantum Mechanics
- Module 2: Quantum Computing Basics
- Module 3: Quantum Gates and Circuits
- Module 4: Basic Quantum Algorithms
- Module 5: Quantum Programming with Qiskit
- Clone this repository
- Install required dependencies (see
requirements.txt) - Follow the tutorials in order
- Complete the exercises in each section
- Qiskit Documentation
- IBM Quantum Experience
- Quantum Computing Playground
- Linux Foundation Quantum computing course
- IBM Quantum technology
- Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information: 10th Anniversary Edition. Cambridge University Press.
- Yanofsky, N. S., & Mannucci, M. A. (2013). Quantum Computing for Computer Scientists. Cambridge University Press.
- Mermin, N. D. (2007). Quantum Computer Science: An Introduction. Cambridge University Press.
- Shor, P. W. (1997). Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM Journal on Computing, 26(5), 1484-1509.
- Grover, L. K. (1996). A Fast Quantum Mechanical Algorithm for Database Search. Proceedings of the 28th Annual ACM Symposium on Theory of Computing, 212-219.
- Preskill, J. (2018). Quantum Computing in the NISQ era and beyond. Quantum, 2, 79.
- Quantum Computing Report - https://quantumcomputingreport.com/
- Qiskit Textbook - https://qiskit.org/textbook/
- Qiskit Youtube Channel ibm.com/quantum/qiskit
Feel free to contribute to this repository by:
- Reporting issues
- Suggesting improvements
- Submitting pull requests
This course is designed and tested using Qiskit version 2.0.0 or later (specifically, the qiskit metapackage).
Why this matters:
- Rapid Evolution: Quantum computing is a rapidly advancing field, and software frameworks like Qiskit evolve quickly to incorporate new research, hardware capabilities, and improved programming interfaces.
- Version 1.0 and 2.0 Milestones: Qiskit reached a significant
1.0.0metapackage release in early 2024, which stabilized many APIs and introduced theqiskit-ibm-providerfor interacting with IBM Quantum hardware. Qiskit2.0.0followed, introducing some breaking changes aimed at long-term improvements and consistency (as detailed in its official migration guides), though many fundamental operations for beginners remain similar. - Course Compatibility: The code examples, exercises, and explanations in this course are tailored to the syntax and behavior of Qiskit 2.0.0+. While many concepts are transferable, using significantly older versions (e.g., Qiskit 0.x) or even some Qiskit 1.x versions might lead to:
- Different function names or arguments.
- Unavailable features.
- Errors when running the provided code.
Our Approach:
- We aim to use the modern, stable Qiskit 2.0.0+ features to provide you with current best practices.
- A
requirements.txtfile is provided with this course. It is highly recommended to set up a Python virtual environment and install the packages listed inrequirements.txtto ensure you have a compatible environment. This file specifiesqiskit>=2.0.0.
If you are using a different version of Qiskit:
- You might need to consult the official Qiskit documentation for your specific version to adapt the code.
- For major version differences (e.g., trying to run this course's code with Qiskit 0.x), significant modifications would likely be required.
Focus on Concepts: While we use Qiskit as our tool, the primary goal of this course is to teach you the fundamental concepts of quantum computing. These concepts (qubits, superposition, entanglement, gates, measurement) are universal. Learning them with Qiskit 2.0.0+ will provide you with a solid and up-to-date practical foundation.