CSS Codes
Calderbank-Shor-Steane codes build quantum codes from two classical linear codes, keeping X-type and Z-type checks separate.
Two classical codes, one quantum code
A CSS code is constructed from two classical binary linear codes C1 and C2 with C2 contained in C1. The X-type stabilizers come from the parity-check matrix of one code and the Z-type stabilizers from the dual of the other. The separation of X and Z checks is the defining feature: no stabilizer mixes X and Y and Z on the same qubit.
The condition C2 subset of C1 (equivalently, the dual containment C1-perp subset of C2-perp arranged so the X and Z checks commute) guarantees the two sets of stabilizers commute, which is required for a valid stabilizer code. The number of logical qubits equals dim C1 minus dim C2.
Why separation helps
Keeping X and Z checks separate means bit-flip and phase-flip errors are decoded independently, each as a classical decoding problem. This modularity makes CSS codes easy to analyze and gives them naturally transversal CNOT gates, since a bitwise CNOT between two blocks maps X and Z stabilizers to products of stabilizers.
- Built from classical codes C2 subset C1 over the binary field.
- X-checks from one code, Z-checks from the dual of the other; they commute.
- X and Z errors decode independently as classical problems.
- Transversal CNOT comes for free; H and S may need extra structure.
Examples
The Steane code uses the classical Hamming code for both C1 and C2-perp, exploiting the fact that the Hamming code contains its dual. The Shor code is also CSS. The surface code and color codes are CSS codes with geometrically local checks, and modern quantum LDPC codes are CSS constructions chosen for sparse, high-rate checks.
The CSS framework is the bridge between decades of classical coding theory and quantum error correction, and most codes deployed or proposed for large-scale machines are CSS.