  Quantum error correction protocols will play a central role in the
realisation of quantum computing; the choice of error correction code will
influence the full quantum computing stack, from the layout of qubits at the
physical level to gate compilation strategies at the software level. As such,
familiarity with quantum coding is an essential prerequisite for the
understanding of current and future quantum computing architectures. In this
review, we provide an introductory guide to the theory and implementation of
quantum error correction codes. Where possible, fundamental concepts are
described using the simplest examples of detection and correction codes, the
working of which can be verified by hand. We outline the construction and
operation of the surface code, the most widely pursued error correction
protocol for experiment. Finally, we discuss issues that arise in the practical
implementation of the surface code and other quantum error correction codes.
