  After a general introduction to nuclear magnetic resonance (NMR), we give the
basics of implementing quantum algorithms. We describe how qubits are realized
and controlled with RF pulses, their internal interactions, and gradient
fields. A peculiarity of NMR is that the internal interactions (given by the
internal Hamiltonian) are always on. We discuss how they can be effectively
turned off with the help of a standard NMR method called ``refocusing''. Liquid
state NMR experiments are done at room temperature, leading to an extremely
mixed (that is, nearly random) initial state. Despite this high degree of
randomness, it is possible to investigate QIP because the relaxation time (the
time scale over which useful signal from a computation is lost) is sufficiently
long. We explain how this feature leads to the crucial ability of simulating a
pure (non-random) state by using ``pseudopure'' states. We discuss how the
``answer'' provided by a computation is obtained by measurement and how this
measurement differs from the ideal, projective measurement of QIP. We then give
implementations of some simple quantum algorithms with a typical experimental
result. We conclude with a discussion of what we have learned from NMR QIP so
far and what the prospects for future NMR QIP experiments are.
