Waits: Arthur Samuel's Checkers

abrax31411 pts0 comments

WAITS: Arthur Samuel's Checkers · Time Reshared

Time Reshared

Exploring time-sharing operating systems

© 2026 Rupert Lane

WAITS: Arthur Samuel's Checkers

Sun, Aug 9, 2026

dec

pdp-10

waits

Although chess was a popular target, one of the earliest examples of<br>using classical pre-LLM artificial intelligence to play games was<br>checkers/draughts. Arthur Samuel wrote one of the first such programs<br>in the early 1950s, ported this to the PDP-10 when he moved to SAIL<br>and even created a version for a home computer in the late 1970s.

In this post we'll look at Samuel's work on checkers and run the 1972<br>version he created on WAITS.

History

Samuel playing against the IBM 7090. Source: IBM

Arthur Samuel started out working on vacuum tubes at Bell Labs in the<br>1930s. In 1946 he became a professor at the University of Illinois.<br>Wanting to get a computer for the university, he came up with a<br>proposal to build one, and for it to run a program that could play<br>checkers. He started planning for it on paper, but both it and the<br>computer were not finished when he left in 1949 to work at IBM.

There his main role was on vacuum tubes and later transistors, but the<br>problem of checkers still intrigued him. He worked on it using the IBM<br>70x series of machines - according to a<br>letter to a computer<br>magazine journalist in 1979, it was written initially in raw machine<br>code as even an assembler was not available for the IBM machine yet. A<br>first version was ready in 1952, but

It was not until 1954, with the advent of the IBM 704 that my program<br>was able to play an interesting game. My contribution was to add<br>learning to the program, and I believe that I can claim a first for<br>this.

In 1956 the program was demonstrated on TV and caught the imagination<br>of the public. Eventually it was able to play games at a level that<br>could sometimes challenge a master player.

Using techniques such as minimax, alpha-beta pruning and rote<br>learning, his work was influential in the early years of AI; Samuel<br>was present at John McCarthy's 1956 Dartmouth workshop and his work<br>was included in Feigenbaum and Feldman's seminal 1960s overview of<br>AI, Computers and Thought.

He retired from IBM in 1966 and came to SAIL as a senior member of<br>staff. Here he helped with many of the lab's projects, and also ported<br>his IBM 7090 assembly program to PDP-10 assembly language. The version<br>we have running today is from 1972.

Checkers running on WAITS. Source: Rupert Lane. License: CC0.

He picked it up again in 1976 due to interest from other researchers,<br>and played against a team at Duke University who had a new program<br>running on an IBM System/360. Two games were played, but not to<br>completion due to the amount of CPU time needed. According to an<br>account by Samuel:

it was believed that the Duke program had a possible win in both<br>games. Subsequent analysis reveals that one of these games might still<br>lead to a draw.

Also in 1977, he worked with the makers of the VideoBrain Family<br>Console to develop a version of checkers for this early home computer.<br>This was a cut-down version, as the system only had 1KB of RAM, but<br>offered four different levels of difficulty. He also helped on the AI<br>for the VideoBrain version of Reversi/Othello, Vice Versa.

VideoBrain checkers program and manual. Source (l) atariprotos.com (r) archive.org

Playing checkers on WAITS

The program can be run on any terminal type by typing R CHECKE. Type<br>HELP (must be in upper case) to see a list of commands: you can<br>enter initial board settings, adjust playing parameters and even have<br>the computer play itself with the PS command.

By default, you are playing first (as black/red) and the computer<br>second (as white/blue). You enter moves by typing the source<br>and destination squares, using the standard notation<br>where 1 is the bottom right position and 32 the top left.

Here I start the program and move from square 9 to square 13.

.R CHECKE

26 JUL 74

1* 9 13

The program will then try to find the best move and print it, along<br>with some statistics on the number of positions it searched, the best<br>value of its evaluation function, and the time taken in milliseconds<br>(so about 13s here, would have been much slower on real hardware)

MOVE # OF BDS PIECE EVAL TIME

2 23-19 219956. 0 35 13567

so it has moved 23-19. You can type the instruction BD to display<br>the board in ASCII:

3* BD

* + W + W + W + W *<br>* W + W + W + W + *<br>* + W + + W + W *<br>* + W + + + *<br>* + + + + B *<br>* B + B + B + + *<br>* + B + B + B + B *<br>* B + B + B + B + *

But to make life easier, you can also use something like gametable in<br>two player mode to record the moves; here's how the board would look<br>like:

Playing checkers against CHECKE. Source: Rupert Lane. License: CC0.

If you type a nonsensical move it will print:

3* 99 66<br>SORRY CHARLIE!

I won't give a full account of the game, but by move 44 the program<br>announced:

THE PDP-10 EXPECTS TO WIN IN 11 MOVES.<br>44 26-22 15171. 11 MOVE WIN. 1017

but my downfall occurred just...

checkers program samuel waits version computer

Related Articles