ACCEPTABLE vs EXCELLENT CODE "Excellent" version is more efficient in terms of initializing the player's partners. Its output is also more informative since we know the exact status of each player for every pass of the game (it doesn't need to be inferred from the code and the previous output). The output is also more succinct. It also doesn't hurt that seeding the random number generator with the result of time() as opposed to &uThisTask() yields a better distribution of random values. Note that the SendMessage() method in the "excellent" version is shorter than in the "acceptable" version, and thus delays the caller less. ACCEPTABLE vs EXCELLENT TEST DOCUMENTATION This example was constructed to have no user interface to test (won't apply to real assignments). Concentrate on analysing the results to show how the algorithm has been correctly implemented. Both programs are tested reasonably well, but the "excellent" version summarizes the information neatly and doesn't force the reader to skip all over the output trying to match up facts and conclusions.