A Simulated Framework for the Teaching of Distributed Algorithms