The CS program at Georgia Tech offers three options for the MS candidate: thesis, project or course work. I chose to complete the 9-hour project during the Fall 2012 semester. My project is titled ScratchGo: An Integrated Approach to Playing Computer Go. It is a fully functional Computer Go agent capable of online or offline play using any board size. The core algorithm is parallel Monte Carlo Tree Search (MCTS). ScratchGo includes a mechanism for learning Computer Go heuristics through training neural networks using Temporal Difference learning. The project name alludes to the capacity for learning heuristics such as passing and opening play ‘from scratch’ using Epsilon-greedy training against initially random neural networks. It is also capable of loading and saving games in Simple Game Format (SGF) and LaTeX code.
Getting and Building ScratchGo : scratchgo.tar.gz
ScratchGo is 100% original code developed using Eclipse, Java and Ant. It reads SGF files using a custom grammar compiled by the ANTLR toolkit and uses the KGS Go Text Protocol library for communication with the KGS Go Server on the Internet. The complete project suitable for building with Ant or Eclipse can be downloaded here. To build ScratchGo, simply extract the project from the archive file and run ‘ant’ in the project directory.
Project Report : scratchgo-wfolsom-2013.pdf
ScratchGo was implemented to fulfill the 9-hour project option under the guidance of Dr. Frank Dellaert. While a write-up was not required, it seemed best to document the development process including the planned schedule, features delivered, additional research and my thoughts on possible future enhancements. The latest revision of this report can be viewed here.
Final Thoughts:
ScratchGo was the the most ambitious project I undertook during my time at Georgia Tech. Although the work was difficult and the outcome only moderately successful, I feel that I grew as a result, both as a software engineer and a computer scientist. It was rewarding to become part of a small community of researchers and developers who are pushing the boundaries of this as-yet unsolved problem in artificial intelligence. In particular, I learned to review my own work with a more critical eye and to more carefully document my work for later reference. I also gained a better appreciation of the agile development maxim ‘fail early; fail often’ by watching real opponents play against ScratchGo on KGS. Finally, my own skills and appreciation of the fascinating game of Go have improved immeasurably after hundreds of games over the course of the past four months.