Skip to main content

Introduction to Quantum Computing: Beyond Classical Bits

Published: March 9, 2026 Updated: May 25, 2026 Larry Qu 7 min read

Introduction

Quantum computing represents a fundamental shift in computation. Using quantum mechanical phenomena, quantum computers solve certain problems exponentially faster than classical computers. This guide introduces quantum computing fundamentals.

Classical vs Quantum

Classical Computing

  • Bits: 0 or 1
  • Deterministic
  • Sequential processing
  • Logical operations

Quantum Computing

  • Qubits: 0, 1, or both
  • Probabilistic
  • Parallel processing
  • Quantum operations

Quantum Basics

Qubits

The basic unit of quantum information:

|0⟩ = [1]  (0 state)
|1⟩ = [0]  (1 state)

Superposition: α|0⟩ + β|1⟩ where |α|² + |β|² = 1

Superposition

A qubit can be in multiple states simultaneously:

|ψ⟩ = α|0⟩ + β|1⟩

Example: 50/50 superposition
|ψ⟩ = 1/√2 |0⟩ + 1/√2 |1⟩

Entanglement

Quantum particles can be connected:

Bell State: |Φ+⟩ = 1/√2 (|00⟩ + |11⟩)

Measuring one qubit instantly affects the other.

Quantum Gates

Gate Symbol Effect
Hadamard H Creates superposition
Pauli-X X NOT gate
Pauli-Y Y Phase and bit flip
Pauli-Z Z Phase flip
CNOT CNOT Controlled NOT

Quantum Algorithms

Shor’s Algorithm

  • Factorization problem
  • Breaking RSA encryption
  • Exponential speedup

Grover’s Algorithm

  • Unstructured search
  • Quadratic speedup
  • Database search

Quantum Machine Learning

  • Quantum neural networks
  • Quantum clustering
  • Feature spaces

Quantum Hardware

Types of Qubits

Type Examples Pros Cons
Superconducting IBM, Google Fast gates Extreme cooling
Trapped Ion IonQ, Honeywell Long coherence Slow gates
Photonic Xanadu Room temp Hard to entangle
Topological Microsoft Error-resistant Not yet viable

Challenges

  • Decoherence
  • Error rates
  • Connectivity
  • Scalability

Quantum Software

Programming Languages

  • Qiskit: IBM’s quantum SDK
  • Cirq: Google’s quantum library
  • Braket: Amazon’s quantum service
  • Quil: Rigetti’s framework

Hello World in Qiskit

from qiskit import QuantumCircuit

# Create circuit with 1 qubit
qc = QuantumCircuit(1)

# Apply Hadamard gate
qc.h(0)

# Measure
qc.measure_all()

# Draw circuit
print(qc)

Applications

Near-term Applications

  • Quantum chemistry
  • Optimization problems
  • Machine learning
  • Financial modeling

Cryptography Impact

  • Post-quantum cryptography
  • Quantum key distribution
  • Threat to current encryption

Companies and Research

Major Players

  • IBM: Quantum System One
  • Google: Quantum supremacy claim
  • Microsoft: Azure Quantum
  • Amazon: Braket service

Startups

  • IonQ
  • Rigetti
  • Xanadu
  • PsiQuantum

Learning Resources

Getting Started

  • Qiskit textbook
  • IBM Quantum Experience
  • Coursera quantum courses

Prerequisites

  • Linear algebra
  • Complex numbers
  • Basic quantum mechanics (helpful)

Future Outlook

Timeline

  • 2026-2030: NISQ era (noisy, intermediate-scale)
  • 2030+: Fault-tolerant quantum computing

What Will Change

  • Drug discovery
  • Materials science
  • Financial modeling
  • Cryptography

Quantum Gate Deep Dive

Quantum gates are the building blocks of quantum circuits. Unlike classical logic gates that operate on definite 0/1 values, quantum gates manipulate probability amplitudes.

Single-Qubit Gates

The Hadamard gate creates superposition, transforming a qubit from a definite state to an equal probability of 0 or 1:

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
import numpy as np

# Hadamard gate effect
qc = QuantumCircuit(1)
qc.h(0)

state = Statevector(qc)
print(f"State after H: {state}")  # 1/√2 (|0⟩ + |1⟩)

# Bloch sphere representation
theta = 2 * np.arccos(np.sqrt(0.5))  # 90 degrees
print(f"Bloch sphere angle: {np.degrees(theta):.0f}° from |0⟩")
Gate Symbol Matrix Effect
Hadamard H 1/√2 [[1,1],[1,-1]] Creates superposition
Pauli-X X [[0,1],[1,0]] Quantum NOT (bit flip)
Pauli-Y Y [[0,-i],[i,0]] Bit + phase flip
Pauli-Z Z [[1,0],[0,-1]] Phase flip
Phase S [[1,0],[0,i]] 90° phase
T Gate T [[1,0],[0,e^(iπ/4)]] 45° phase

Multi-Qubit Gates

The CNOT (controlled-NOT) gate entangles two qubits. The target qubit flips only if the control qubit is |1⟩:

def bell_state_circuit():
    """Create a Bell state: 1/√2 (|00⟩ + |11⟩)"""
    qc = QuantumCircuit(2, 2)
    qc.h(0)      # First qubit into superposition
    qc.cx(0, 1)  # CNOT: entangle both qubits
    qc.measure([0, 1], [0, 1])
    return qc

bell = bell_state_circuit()
print(bell.draw())

# Bell state measurement outcomes
# Result: 50% |00⟩, 50% |11⟩ (perfectly correlated)

Toffoli Gate (CCNOT)

The Toffoli gate is a controlled-controlled-NOT — it flips the target only when both control qubits are |1⟩. It is universal for classical reversible computing:

def toffoli_and_gate(a, b):
    """Implement classical AND using Toffoli gate."""
    qc = QuantumCircuit(3, 1)
    # Initialize inputs
    if a:
        qc.x(0)
    if b:
        qc.x(1)
    # Toffoli
    qc.ccx(0, 1, 2)
    # Measure result
    qc.measure(2, 0)
    return qc

# AND(1, 1) = 1
circuit = toffoli_and_gate(1, 1)
print("Toffoli AND(1,1):", circuit.draw())

Quantum Circuits and Measurement

A quantum circuit is a sequence of gates applied to qubits, followed by measurement. Measurement collapses the quantum state to a classical outcome:

def quantum_circuit_demo():
    """Demonstrate quantum circuit execution."""
    from qiskit import QuantumCircuit, transpile
    from qiskit_aer import AerSimulator

    # 3-qubit circuit
    qc = QuantumCircuit(3, 3)

    # Layer 1: Superposition
    qc.h(0)
    qc.h(1)

    # Layer 2: Entanglement
    qc.cx(0, 2)
    qc.cx(1, 2)

    # Layer 3: Phase
    qc.t(0)
    qc.s(1)

    # Measure all
    qc.measure_all()

    # Simulate 1000 shots
    simulator = AerSimulator()
    compiled = transpile(qc, simulator)
    result = simulator.run(compiled, shots=1000).result()
    counts = result.get_counts()

    print(f"Measurement distribution: {counts}")
    # Qubits exhibit correlated probabilities
    # due to entanglement

quantum_circuit_demo()

Bell States: The Heart of Quantum Correlation

Bell states are maximally entangled two-qubit states that demonstrate quantum correlation. They are the foundation for quantum teleportation and quantum key distribution:

def generate_bell_state(bell_type='phi_plus'):
    """Generate any of the four Bell states."""
    qc = QuantumCircuit(2)

    if bell_type == 'phi_plus':    # |Φ+⟩ = 1/√2(|00⟩ + |11⟩)
        qc.h(0); qc.cx(0, 1)
    elif bell_type == 'phi_minus':  # |Φ-⟩ = 1/√2(|00⟩ - |11⟩)
        qc.h(0); qc.cx(0, 1); qc.z(0)
    elif bell_type == 'psi_plus':   # |Ψ+⟩ = 1/√2(|01⟩ + |10⟩)
        qc.h(0); qc.cx(0, 1); qc.x(0)
    elif bell_type == 'psi_minus':  # |Ψ-⟩ = 1/√2(|01⟩ - |10⟩)
        qc.h(0); qc.cx(0, 1); qc.x(0); qc.z(0)

    return qc

bell = generate_bell_state('phi_plus')
print(bell.draw())

Qubit Technologies in Detail

Different physical implementations of qubits offer distinct trade-offs:

Technology Qubit Type Typical Fidelity Coherence Time Operating Temp Leading Org
Superconducting Josephson junction 99.9% (1q), 99.5% (2q) 100-500 μs 15 mK IBM, Google
Trapped Ion Atomic ion 99.99% (1q), 99.8% (2q) 1-50 s 4 K IonQ, Honeywell
Photonic Photon 99% N/A (traveling) Room temp Xanadu, PsiQuantum
Neutral Atom Rydberg atom 99.5% 1-10 s 100 μK QuEra, Atom
Silicon Spin Electron spin 99.9% 1-10 s 100 mK Intel, SQC

Each technology has its sweet spot. Superconducting qubits offer fast gate speeds and mature fabrication. Trapped ions provide exceptional fidelity and long coherence. Photonic qubits operate at room temperature, eliminating refrigeration complexity.

Quantum Supremacy and Advantage

The Milestones

  • 2019: Google claimed quantum supremacy with Sycamore processor — 53 qubits solved a problem in 200 seconds that would take a classical supercomputer 10,000 years
  • 2023: IBM Osprey 433-qubit processor demonstrated
  • 2024: Error correction milestones — logical qubits with error suppression below physical qubit thresholds
  • 2026: 1000+ qubit processors available via cloud; error-corrected logical qubits demonstrated in multiple architectures

Supremacy vs. Advantage

Concept Definition Status (2026)
Quantum Supremacy Quantum computer solving a problem no classical computer can Demonstrated (2019)
Quantum Advantage Quantum computer solving a useful problem faster than classical Emerging for specific problems
Quantum Utility Quantum computer performing useful tasks, even if not faster IBM demonstrated (2023+)
def quantum_advantage_example():
    """Demonstrate a problem where quantum may excel."""
    # Classically hard: sampling from random circuit
    # or simulating quantum chemistry
    from qiskit import QuantumCircuit
    from qiskit_aer import AerSimulator

    # Random circuit sampling (Google supremacy benchmark)
    n_qubits = 20
    depth = 20
    qc = QuantumCircuit(n_qubits, n_qubits)

    for d in range(depth):
        for q in range(n_qubits):
            import random
            gate = random.choice(['h', 'x', 'y', 'z', 't'])
            getattr(qc, gate)(q)
        for q in range(0, n_qubits - 1, 2):
            qc.cx(q, q + 1)

    qc.measure_all()
    print(f"Circuit depth: {depth}, Qubits: {n_qubits}")
    print("Classical simulation cost: O(2^n)")

quantum_advantage_example()

Accessing Real Quantum Hardware

Cloud-accessible quantum computers are available through multiple providers:

Provider Platform Hardware Access Free Tier Best For
IBM IBM Quantum 10+ processors 10 mins/month Learning, research
Amazon Braket IonQ, Rigetti, QuEra Pay-as-you-go Multi-platform
Azure Quantum IonQ, Quantinuum $500 credit Enterprise
Google Quantum AI Sycamore Research access Advanced research
from qiskit_ibm_runtime import QiskitRuntimeService

def run_on_ibm_quantum():
    """Run a circuit on real IBM quantum hardware."""
    service = QiskitRuntimeService()
    backend = service.least_busy(
        operational=True,
        simulator=False,
        min_num_qubits=5
    )
    print(f"Using backend: {backend.name}")
    print(f"Queue size: {backend.status().pending_jobs}")

    qc = QuantumCircuit(2)
    qc.h(0)
    qc.cx(0, 1)
    qc.measure_all()

    from qiskit import transpile
    compiled = transpile(qc, backend)
    job = backend.run(compiled, shots=1024)
    print(f"Job ID: {job.job_id()}")
    result = job.result()
    print(f"Counts: {result.get_counts()}")

Conclusion

Quantum computing is still early but advancing rapidly. Understanding the fundamentals helps you evaluate the technology’s potential and prepare for its impact.


Resources

Comments

👍 Was this article helpful?