Quantum Algorithms For Simulating Quantum Systems