Write a computer program to play chess. It doesn’t have to play particularly well, just display an ability comparable to the average human being who has some aptitude for the game.
What is the point of that? Computers have been playing passable games of chess for almost as long as there have been computers. In 1996 IBM’s Deep Blue defeated the human grandmaster Gary Kasparov, surely moving chess-playing into the “solved” column of computer science. In hindsight, making chess a benchmark of artificial intelligence seems like a mistake. To play well one must be able to quickly enumerate a large but nevertheless finite and well-defined search space, something that computers are better at than human beings. Suggest something harder.
But wait, I was serious about that “average human being” part. For example, a human being can play on all sorts of sets. The board can be a piece of black-and-white cardboard with a fold down the middle, an unrolled green-and-tan square of felt, or rigid expensive carpentry with mother-of-pearl squares. There can be wood pieces, plastic pieces. Novelty sets with chessmen in the shape of Civil War soldiers or J.R.R. Tolkien characters. Stylized two-dimensional shapes from a newspaper column, or those same shapes projected on the screen of a different chess-playing computer program. Make your program handle that.
That’s probably doable. Distilling the common essence of these various situations (thirty-two identifiable things, grouped into various equivalence classes, arranged on an 8×8 grid) is about state of the art for computer vision. It is straightforward to formulate a machine learning approach to a chessboard/not-chessboard classification. To identify individual pieces and their relevant spatial relationships to each other is harder, but let’s say it too is doable. “Merely” an engineering task. You may elect to put an image processing layer of sufficient accuracy in front of your traditional chess-playing program, in whose source code I could no doubt find strings like “bishop”, “board_position”, and “legal_to_castle”.
But the average person isn’t born knowing anything about bishops or board positions or castling. We don’t have the capacity for identifying knights (paradigmatically horses, but in failing that the most contextually horse-like things in a set of fourteen other things) hard-wired into our brains. So it is cheating to hard-code a concept of knight into your program, or even to have amassed pictures of knights as part of the training process for a computer vision system. (And what does “contextually” mean anyway?) No, you must write a program that when presented with a series of chess-like situations is somehow able to discern their significance.
(You are allowed to write a program learn to play chess by having the game explained to it. That is how most people learn. In this case, though, your program would have to understand human language.)
What is a chess-like situation? How do you steer your program’s attention towards those things in particular? Why does a person play chess? For enjoyment, intellectual challenge? To be sociable, or to satisfy a competitive urge? The earn masters’ points, to win, to prove yourself, to hustle money in Washington Square Park? How do you incline a machine to arrange these disparate concepts around a hub of black-and-white and thirty-two pieces? (And it must be thirty-two. If someone presents your program with a setup missing a queen, or with the pieces lying in a jumble in the middle of the board, it must be able to identify this as “not-chess” and fail to play in an appropriate manner.) I haven’t even asked you to build a robot to pick up chessmen and physically move them, even though that is what people do too, and also aren’t born knowing how to do it. How do you pick chess out from the general flow of life?