I wrote Othello because I suddenly wanted to try cgi bin programming. (Well this is what I call compulsive hacking.) The basic programme was finished in a few days. I am now in the never ending polishing and fine tuning phase.
The core of Web Othello is an alpha-beta search engine. The current implementation is satisfactory in speed but I have a feeling that I can still make it run faster via additonal prunning other than that by the alpha-beta algorithm. The Othello programme uses a weight matrix to evaluate games. The evaluation function is the difference of weighted sums of positions occupied by white pieces and those by black pieces. This matrix was generated by a genetic algorithm. First I generated 100 random matrices. Then the 100 alogrithms corresponding to the matrices played Othello against each other. If an algorithm lost too many games, it was killed. New algorithms were generated by making random matrices, mutating existing matrices or crossing existing matrices. This process continued for a few days and then I picked the best matrix among the 100.
The Web Othello programme does 1, 3 and 5 moves look-ahead in the Beginner, Normal and Adept levels respectively. Originally I used 2, 4, 6 but I found the programme too greedy since the last look-ahead move was made by the computer, not the human player. I want to use 7 moves look-ahead in the Adept mode but it seems that it is too slow on our deparments postgraduate student server, champion, which is a SPARCserver 20 and is always crowded.
If you have any comment about Web Othello, please drop me a line or two.