Mastering Software Instruction Through Simulation