This teaching presentation considers basic properties of the Bloch equation along with the practical and efficient methods of solving it. It shows how Bloch equation solvers for arbitrary drive fields can be converted into a core of an MR simulator. Several approaches to building such simulators are discussed along with the brief review of major open-source software packages implementing such functionality.