This thesis is concerned with the control of quantum systems. Given a Hamiltonian model of a quantum system, we are interested in finding controls?typically shaped electromagnetic pulses?that steer the evolution toward a desired target operation. For this we employ a numerical optimisation method known as the GRAPE algorithm. For particular experimental systems, we design control schemes that respect constraints of robustness and addressability, and are within the reach of the experimental hardware. Applications include the preparation of cluster states in a system of trapped ions, the implementation of the two-qubit Deutsch and Grover algorithms on a pair of carbon nuclei at a nitrogen-vacancy center in diamond, and the implementation of quantum gates on a grid of coupled superconducting qubits. In some special cases analytical solutions are obtained. The methods applied here are fairly general and can be adapted to a variety of other physical systems and tasks.