Fifty years of developments in nuclear magnetic resonance (NMR) have resulted in an unrivaled degree of control of the dynamics of coupled two-level quantum systems. This coherent control of nuclear spin dynamics has recently been taken to a new level, motivated by the interest in quantum information processing. NMR has been the workhorse for the experimental implementation of quantum protocols, allowing exquisite control of systems up to seven qubits in size. Here, we survey and summarize a broad variety of pulse control and tomographic techniques which have been developed for and used in NMR quantum computation. Many of these will be useful in other quantum systems now being considered for implementation of quantum information processing tasks.