Understanding Molecular Simulation: From Algorithms to Appli