1. Implement move generators and evaluation functions for one or more of the following games: Kalah, Othello, checkers, and chess.

2. Construct a general alpha–beta game-playing agent.

3. Compare the effect of increasing search depth, improving move ordering, and improving the evaluation function. How close does your effective branching factor come to the ideal case of perfect move ordering?

4. Implement a selective search algorithm, such as B\* Berliner:1979, conspiracy number search @McAllester:1988, or MGSS\* Russell+Wefald:1989 and compare its performance to A\*.

Develop a general game-playing program, capable of playing a variety of
games.

1. Implement move generators and evaluation functions for one or more
of the following games: Kalah, Othello, checkers, and chess.

2. Construct a general alpha–beta game-playing agent.

3. Compare the effect of increasing search depth, improving move
ordering, and improving the evaluation function. How close does your
effective branching factor come to the ideal case of perfect move
ordering?

4. Implement a selective search algorithm, such as B\* Berliner:1979,
conspiracy number search @McAllester:1988, or MGSS\*
Russell+Wefald:1989 and compare its performance to A\*.