A collection of research-oriented Jupyter notebooks exploring quantum computing algorithms and protocols using Qiskit.
| Notebook | Topics | Qubits | Level |
|---|---|---|---|
| 01 — Quantum Computing Fundamentals | Single-qubit gates, Bell states, teleportation, Deutsch–Jozsa, Grover's search, noise simulation | 1–3 | Introductory |
| 02 — QFT & Shor's Algorithm | Quantum Fourier Transform, phase estimation, modular exponentiation, Shor's factoring (N=15, 21, 33, 35) | 4–14 | Advanced |
| 03 — Variational Quantum Eigensolver | VQE framework, Pauli Hamiltonians, ansatz design, H₂ & LiH ground states, noise-aware VQE, barren plateaus | 2–6 | Advanced |
| 04 — QAOA & Quantum Adiabatic Algorithm | Combinatorial optimisation, MaxCut, QAOA ansatz & landscape, depth scaling, adiabatic theorem, transverse-field Ising sweep, minimum gap | 5–6 | Advanced |
| 05 — Quantum Error Correction | Bit-flip & phase-flip codes, Shor [[9,1,3]], stabiliser formalism, Steane [[7,1,3]], threshold theorem, surface code, noisy syndromes | 3–17 | Advanced |
- Python ≥ 3.9
- Jupyter Notebook or JupyterLab
git clone https://github.com/<your-username>/quantum-computing-simulations.git
cd quantum-computing-simulations
pip install -r requirements.txt
jupyter labfrom qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
result = AerSimulator().run(qc, shots=1024).result()
print(result.get_counts())
# Expected: {'00': ~512, '11': ~512}- Bloch sphere visualisation
- Quantum entanglement (all four Bell states)
- Quantum teleportation protocol
- Deutsch–Jozsa algorithm (exponential speedup over classical)
- Grover's search with amplitude amplification analysis
- Depolarising noise models and fidelity degradation
- QFT circuit construction and verification against analytic DFT matrix
- Approximate QFT with Coppersmith truncation
- Quantum phase estimation (QPE) with precision analysis
- Full Shor's algorithm with continued-fraction post-processing
- Factoring N = 15, 21, 33, 35
- Circuit resource scaling analysis
- Hamiltonian encoding via Pauli decomposition
- Hardware-efficient ansätze (RealAmplitudes, EfficientSU2)
- Exact vs. shot-based expectation value estimation
- H₂ potential energy surface (14 bond lengths)
- Optimiser comparison (COBYLA, L-BFGS-B, Nelder-Mead, Powell)
- Noise-aware VQE under shot noise and gate errors
- Barren plateau demonstration (gradient variance scaling)
- LiH ground state (6-qubit benchmark)
- MaxCut on a small graph with brute-force optimum and Z₂-symmetric solutions
- Cost Hamiltonian encoding as
SparsePauliOpand circuit implementation of$e^{-i\gamma H_C}$ - QAOA ansatz at general depth
$p$ , exact statevector cost evaluation -
$p=1$ cost landscape over$(\gamma,\beta)$ - Depth scan
$p=1,\ldots,6$ with COBYLA + random restarts, approximation ratio convergence - Output bitstring distribution at optimal angles
- Quantum adiabatic theorem:
$H(s)=(1-s)H_B + sH_C$ via second-order Trotter with pre-diagonalised propagators - QAA on the same MaxCut: instantaneous-GS overlap and success probability vs annealing time
$T$ , head-to-head against QAOA - Transverse-field Ising chain: spectrum vs
$s$ , disentangling the trivial$\mathbb{Z}_2$ ferromagnetic degeneracy from the relevant gap - Adiabatic theorem in action: fidelity vs
$T$ , comparison of linear and$\sin^2$ schedules, motivation for gap-adapted (Roland–Cerf) annealing
- Pauli error model (bit-flip, phase-flip, depolarising)
- 3-qubit bit-flip and phase-flip codes with syndrome extraction
- Shor [[9,1,3]] code — first code correcting arbitrary single-qubit errors
- Stabiliser formalism and eigenvalue-based error detection
- CSS codes and the Steane [[7,1,3]] code from the Hamming code
- Concatenated codes and doubly-exponential error suppression
- Threshold theorem and its implications
- Surface code lattice structure and resource estimates
- Repeated syndrome extraction under noisy measurements
- Qiskit 2.x — circuit construction, transpilation, quantum info
- Qiskit Aer — high-performance statevector and shot-based simulation
- SciPy — classical optimisation (COBYLA, L-BFGS-B, etc.) and linear algebra (
expm,eigh) - NetworkX — graph construction and layout for MaxCut instances
- Matplotlib — visualisation
- Nielsen, M. A. & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
- Shor, P. W. (1994). "Algorithms for quantum computation: discrete logarithms and factoring." FOCS.
- Peruzzo, A. et al. (2014). "A variational eigenvalue solver on a photonic quantum processor." Nature Communications.
- McClean, J. R. et al. (2018). "Barren plateaus in quantum neural network training landscapes." Nature Communications.
- Farhi, E., Goldstone, J. & Gutmann, S. (2014). "A Quantum Approximate Optimization Algorithm." arXiv:1411.4028.
- Farhi, E., Goldstone, J., Gutmann, S. & Sipser, M. (2000). "Quantum Computation by Adiabatic Evolution." arXiv:quant-ph/0001106.
- Roland, J. & Cerf, N. J. (2002). "Quantum search by local adiabatic evolution." Phys. Rev. A 65, 042308.
- Gidney, C. & Ekerå, M. (2021). "How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits." Quantum.
- Fowler, A. G. et al. (2012). "Surface codes: Towards practical large-scale quantum computation." Phys. Rev. A.
- Google Quantum AI (2023). "Suppressing quantum errors by scaling a surface code logical qubit." Nature.
MIT — see LICENSE.