In this project, you will, among other things:
For this project, you will write a program that plays Gomoku. However, the point is not to do search (as we might have done in CS116), but rather for the program to learn an evaluation function that will select the best move without search. Chapter 1 of your text describes the design of an adaptive checkers-playing program. You should use that as a guide and implement LMS as your learning method.
In this course I normally allow you to use whatever programming language you would like. However, in this case I want you to use Racket. This works well for students taking CS105 Programming Languages. On Eureka, I am providing a Racket starter package on which you are welcome (but not required) to build.
Your implementation should play games against itself (or another version of itself), improving it's performance based on the games that have been played. Thus, you will have to create training instances from the games played, and then modify your program's model based on these training instances.
This is an individual assignment. Appropriate expectations on working together apply. If you search for them, you can find many implementations of Gomoku in many different programming languages. It is not the goal of this exercise to end up with an adaptive Gomoku player; the goal is for you to learn about machine learning through the process of implementing an apdaptive Gomoku player. Do not short-change your own learning experience by grabbing an implementation from the web and then making a few changes.
Submit a README file together with your program file(s) in either .tgz or .zip format. Your README should describe what features you used and what you did to get the program to learn. Describe any significant discoveries or learning experiences you encountered during the process.
In your code, be sure to follow the design recipe!