Quantum error correction (QEC) and fault tolerant quantum computing are introduced. The basic theory of an important class of quantum error correcting codes, the stabilizer codes, is given. Fault tolerance is described very briefly. The whole fault-tolerant correction process can usefully be described in thermodynamic language, as a special form of heat engine which extracts entropy from a collection of qubits without fully measuring their state. QEC is useful both for stabilizing quantum computers and for detecting small many-body correlated effects which would otherwise be swamped by (uncorrelated) noise.