Connect5 Grading Guide, 01fall alpha: abstract common code into a single funciton. In particular, for the four possible directions, just have functions that take in a dx,dy rather than four separate, otherwise-identical functions. beta: Use helper functions for small, well-defined tasks. Even if you only call the function once, you still add clarity over one huge function. gamma: set! often used when not really necessary -- it's much more intuitive, and easier to debug, to have functions that return a given value, rather than several functions that set! global variables to compute a final value. The latter leads to large, clumsy programs. Most of the time, an accumulator easily suffices to do what people used set! for. (See notes on set!, for some appropriate uses of it.) delta: your program should be able to play connect-7 or connect-19 with the change of only one line. Note that the entire connect5 basic program can be written in 2.5 well commented, nicely spaced pages (that's counting one page for the matrix utilities). (Note counting each function's test-cases, though.) Several people turned in dense, 20-page epics -- ugh! The tournament winner's code did not use searching, nor set!, and it made each move in < 2sec. Test cases were worth half the points. One common glitch, was that when the opponent had two possible wins, your program would give up, and not block either of them (not meeting the specs). Also, many people seemed to miss one or two tests. E-mail me, if you want to know the names of the tests you missed. --ian