PROJECTS 1. Interfaces to the following machines, GUI:s and OS:es: SUNVIEW with color X windows UNIX curses(3X) NeWS MGR PC with MS Windows 3.0 PC with EGA/VGA/... PS2 with Presentation Manager Amiga Atari ST Macintosh (is this kosher?) VT100 terminal using VT100 graphics characters GNU Emacs (M-X Othello, running the game in an inferior process.) 2. Write code to use time as limit instead of depth of search. 3. Write a signal handler that interrupts the thinking of the program and reads some input. This would enable the program to think on the opponent's time. 4. Make it possible to enter a position on stdin from which the game can be continued. This is helpful if one wants to use the program as an aid in analyzing othello games. It is also (together with the above) essential if we want to create some form of multiprocessor game. We also want the program to report how highly it values a specific position. 5. Write a master othello program that arbitrates a network of computers, each with one Othello program on it. This program should talk to a server on each machine through some kind of a socket connection. Each server talks to its own othello program through a pair of pipes. (Is there any better way of doing this?) 6. Write an endgame package to make it faster to search to the bottom at the end of the game. The endgame functions can be made simpler because strategic considerations don't have to be made at the end of the game. The raw number of pieces is the only thing that counts. (7. verbose mode that makes cute remarks about opponents play.) On second thought, perhaps not after all... 8. A good edge stability evaluator with the evaluations stored in a lookup table to save time. Some of this is already done. 9. Make the program start quicker by computing the edge table in its own program and writing the result to a C file which we compile and link into the program. This will increase the size of the executable with ~20 Kbytes and complicate the compilation somewhat but othello will start MUCH faster. 10. Rewrite the edge table to include the X squares, i.e. the squares corner to corner to the corner squares. 11. Save and reload a game. 12. A program that lets two othello programs play against each others and that records the result in a file. Perhaps the program should be script driven so that we can test different versions of othello against each other and check if a change made any difference and in what direction. To do this, it would also be necessary to write a new io package, perhaps using RPC. 13. Tune the coefficients of the evaluation function. 14. Implement incremental depth of search and store the information gathered in one search in a table to be used in the next deeper search. 15. Implement an opening book. It would be nice if the program itself could be used to create the book and to enhance it. 16. Deeper undo? 17. More sophisticated search algorithms. Zero window search? 18. Take into consideration potential mobility in the spirit of Rosenbloom's article `Creating a World Class Othello Player'.