Simulating quantum mechanics is known to be a difficult computational problem, especially when dealing with large systems. However, this difficulty may be overcome by using some controllable quantum system to study another less controllable or accessible quantum system, i.e., quantum simulation. Quantum simulation promises to have applications in the study of many problems in, e.g., condensed-matter physics, high-energy physics, atomic physics, quantum chemistry and cosmology. Quantum simulation could be implemented using quantum computers, but also with simpler, analog devices that would require less control, and therefore, would be easier to construct. A number of quantum systems such as neutral atoms, ions, polar molecules, electrons in semiconductors, superconducting circuits, nuclear spins and photons have been proposed as quantum simulators. This review outlines the main theoretical and experimental aspects of quantum simulation and emphasizes some of the challenges and promises of this fast-growing field.