Abstract
This article is a series of anecdotes about the development of several programs that advanced the state of the art in computer chess. The best known is
Introduction
I became interested in computer chess as a high school senior in 1966 when a new TV series “Star Trek” first aired. In it, on more than one occasion, Mr. Spock was playing chess against the computer. The idea seemed to me to be fascinating and I started looking for more information. The only source was a university some 60 miles from home, so off I went to see what I might discover at the University of Southern Mississippi.
That interest continued until I started taking computer science courses in the Summer of 1968, the start of my junior year at the university. Amazingly, it has continued to the present. This paper is short on technical details, rather it is more about the developmental milestones along the way from
1968
In the Summer of 1968, I completed a FORTRAN course at the University of Southern Mississippi. Since I had been playing chess since the age of 10 or so, and having seen Mr. Spock play chess against the Enterprise computer in the TV series Star Trek, combing chess and computers seemed like something that would be both fun and educational to work on. So off I went.
At that point in time, recursion was not something the university’s computing system could handle, since the FORTRAN compiler could not produce re-entrant code for recursion. I would not have used recursion even if it had been available, since I had no experience with it. I read Claude Shannon’s classic paper “Programming a Computer for Playing Chess” (Shannon, 1950) and then several papers on alpha/beta pruning. With that, I was ready to try writing a chess program.
My first program was simplistic. I had six search functions, Search1 through Search6. Each was responsible for that respective ply (i.e., Search1 called Search2, which called Search3, etc.).1
Obviously this was a cumbersome way of simulating recursion.
The program played its first move in October, 1968. I remember the first full game distinctly. I was sitting in the lab by myself, working with a computer with no terminal interface, just two card readers and two line printers. I would punch my move onto a card (IBM 029 keypunch) and run it through the card reader. After a bit, the printer would print one line (the computer’s move) and the program would wait for my next move. I recall our department chairman walking into the lab asking, “Hyatt, what in the world are you doing? I watched you insert a card, wait while the computer’s lights blink like mad, then you space the printer up a few lines to see what was printed, and then you return to the keypunch room. What ARE you doing?” I replied, “I am playing chess.” He shook his head and said, “Of course you are.”
I attended the 1970 ACM annual conference, the host for a historic event – the first computer chess tournament. I was amazed to see an actual chess tournament with only computers playing. I remember some amazingly funny things, from a program moving a pawn to the 8th rank but not promoting it, to
The program was a “back burner” project until 1973 when the University of Southern Mississippi acquired a new Xerox Sigma 9 computer. This machine had several important advantages. First, it was much faster, around 1.3M instructions per second (roughly 20X faster than the IBM/360 computer). Second, it had a “time-sharing operating system” that allowed many simultaneous users. Finally, and most importantly, it had a serial communication interface that could work with hard-wired network connections or with modems (up to 64 devices). Now I had access to a machine that I could use for serious chess program development! By this time, I had graduated with a B.S. in computer science (1970) and had been hired by the University as a systems programmer (operating system support), as well as a Computer Science instructor. This gave me plenty of late-night machine access since our student labs closed at 10 pm.
I dusted off my four-year-old (large) deck of punched cards, spent a few days making the necessary changes to work with the Xerox FORTRAN compiler, and then I was ready to go. I could now interface directly with the computer via a terminal and with a modem from home. No need for a printer or punched cards.
At this time, program progress accelerated quite a bit, thanks to the new time-sharing programming environment. A SEE (Static Exchange Evaluator) was added as the first pseudo-quiescence search. The program was now playing real chess and could finagle a win against a 1500 player maybe 1 out of every 3 or 4 games.
1974
At some point during this time-frame, I was at a university “student recruiting fair” day and was in an exhibit booth next to the University of Southern Mississippi music department. I had been asked to demo my chess program for our booth exhibit, and Albert (Bert) Gower was next to me with the music department exhibit. He was a 1600 United States Chess Federation (USCF) rated player and he wanted to play a game against the program. He won fairly easily and we started talking. Soon thereafter he became a collaborator with me and took over our opening book preparation, as well as playing games to help improve the basic program playing skill. Bert remained a member of the team until we stopped competing in 1994.2
This was the last year that ACM sponsored their annual computer chess tournament. From 1970-1994 – 25 years – their sponsorship was critical for spurring on computer chess program development. The ACM events were an annual highlight.
We allowed students to play the program during “slow times” on the computer, and when we asked for help in naming the program (with the plan to enter an ACM event in the future) students settled on the name “blitz” because it played fast chess fairly strongly compared to longer time controls.
The only thing notable about this year was that we entered
1981
This year had both a high point and a low point.
The first thing of interest became one of the things that almost led me to give up on computer chess. In 1970, Hans Berliner’s program (
The CDC Cyber 176 computer that they used which could execute up to 40M instructions per second.
Seymour Cray was CDC’s chief machine architect and designer. In 1972 he left CDC and formed a company to build an even faster computer. As a systems programmer/instructor, I saw little chance to getting access to such hardware, and without it, there was little hope of competing with
Meanwhile my request to Cray had made its way to Cray’s Minneapolis office through a different channel and ended up in the programming section where benchmarks and operating system development were done. When the president of Cray (Rollwagen) brought up the topic of developing/supporting a chess program, a couple of the Cray guys spoke up. “We have a possible idea here.” They went on to explain how I had contacted them. I was invited to Minneapolis for a visit, and the rest is history.
Once I started to use the Cray (in 1981) we suddenly became competitive in the ACM events. At this point, the next bit of good fortune came our way. Harry Nelson (at Lawrence Livermore National Laboratories) became interested and was playing
The low point happened in a human tournament. We were getting ready for the 1981 ACM Computer Chess Tournament (Los Angeles) and wanted a trial-run before the event. For several years, we had been invited to the Mississippi State Closed Chess Championship. We were never a threat to win it, as they always had one well-known chess Master who played. The tournament was over Labor Day weekend so Cray happily let us have the Cray-1 (serial number 12 for those interested in such details) since they were shut down for the long weekend. They agreed to leave it up for us with an operator on duty to handle any problems.
I contacted the Mississippi Chess Association and told them we would participate in the tournament. As it turned out, this was a decision I later regretted. The issue was a rather poor USCF rule they started using that year which said (paraphrased) “a computer can enter USCF events, but each player has the right to choose at the beginning of the tournament to not be paired against a computer.” There were other specific rules for computers, such as not taking any prizes awarded (cash, books, and so forth) but the first rule turned out to be a big problem. A couple of players chose to exercise this right; Joe Sentef, the master that had won the event multiple times, did not. In fact, if he won in 1981, he would “retire” the trophy. Joe felt it would look bad if he chose to not play the computer.
Remember that this was our first tournament using the Cray. We went through that event with a perfect score. In the final round, we were paired against Joe and won with little fanfare. As a result, Joe did not win the tournament. A 1900 player officially “won” the event, a consequence of
It turned out that there were others that objected as well. Several reasons were given, most pretty ridiculous. For example, “this tournament is for Mississippi chess players only, the Cray computer is located in Minneapolis and is obviously not a state resident.” Or “the computer uses an opening book which violates the rules of chess.” (I asked them to point out the book it was using, and received blank expressions.) There were others. To me, this looked like a complete failure for us as instead of positive publicity, we generated mostly complaints. Chess Life didn’t agree and published the game, as did several other publications. But it really felt like a defeat to us.
Joe and I remained good friends for a few years, but the tournament result was always a point of contention. The good news was that (a)
This rule showed the disdain that chess players had for the computer – computers were interesting players, but inconsequential to the upper levels. In 1976
At the 1981 ACM tournament, we finished in 2nd place, tied with
In the middle of 1983, Cray announced a new machine, the Cray XMP-2, their first machine with two processors. Boy, did this get our attention. We quickly did our first parallel search implementation and barely got it working prior to the 1983 World Computer Chess Championship (New York City). When I say “barely” I mean that we had the program playing reasonable moves, but it had not played a single full game. With great fear and trepidation, we entered round 1 of the World Championship. We had the Cray XMP-2 dedicated to us so no other users could steal cycles, and amazingly it played all 5 rounds without a single hiccup. We ended up winning that event and became World Computer Chess Champion.
This turned into (for us) a remarkable result. Computer problems and remote access (usually through dial-up modems back then) were always a problem: machines going down, communications interruptions, software glitches, and so on. It was rare to see complete games without issues. An experimental program, on a brand new (and experimental) computer, and using experimental operating system software, all had us expecting problems which kept our nerves on edge and our attention tightly focused on
One quote from this era stands out to me. In 1977 Monty Newborn famously said, “Chess masters used to come to computer chess tournaments to laugh. Now they come to watch. Soon they will come to learn.” As always, “soon” stretched out to a little more than a few years but eventually we reached the point where we are today, with humans having virtually no chance of beating a top computer chess program. It was a prophetic statement given today’s hindsight. At the time, it was a debatable prediction.
1984
In early 1984, Cray announced the four-processor XMP-4. This required a rewrite of our parallel search to make it more general. It obviously doubled our speed again and we won the 1984 ACM tournament, albeit not without incident. Figure 1 shows the critical position for the game
Some explanation is needed to understand this game. I had gotten sick prior to the tournament (flu most likely, my wife said we were staying up so late at night working on

We were losing to
The remainder of the games were all won by
There are always “issues” that arise for these events. The big one for us came about a week before the tournament’s first round. I was running some test positions since we were using yet another parallel search algorithm because the old one did not perform well with the four processors our machine had. Immediately the program hung in a deadlock and would no longer respond. I debugged and eventually discovered that the problem was not in our code, it was in Cray’s parallel FORTRAN library. By this time, I was on a first name basis with the operating systems team at Cray and I called them. I told them the old library appeared to work, but the new one was causing a problem. I knew we could not play with the old one because the new version of the operating system needed the new library otherwise other race conditions would likely be a major problem.
The Cray team jumped right in and started trying to debug their library to see what might be wrong. Apparently it was a significant problem and all of them were running tests, using all four of the four-CPU machines Cray had at their computer center. Somewhere into the second day of this intense effort, I got a call from Cray’s Vice-President for Systems Development. She asked, “Bob, somehow you have all of our system guys working on an operating systems problem, using all of our computer systems. Could I possibly borrow one of each to solve a customer problem?” I thought, “Uh oh. This could be trouble.” Then she laughed and said, “I am kidding. But, not really, I do need someone to fix this issue, but it can wait for a day or two.” We basically had all of the technical folks (and computers) working on a problem that had only been seen in a computer chess program (although we all knew it would affect other software as well).
Luckily, the operating systems team isolated and then fixed the bug, and some quick tests confirmed that the deadlock was gone. Just in time – about two days before we left for the 1984 tournament in Los Angeles. As you can see, rarely did things go smoothly. However, we learned to cope with these issues and remain sane.
As a brief tangent, before we played in the 1984 ACM event, I was fortunate to obtain Cray time to play in a human tournament in Mobile, Alabama. Recall that we were moving to a 4-processor Cray and we needed to test the code rewrite. About halfway through our round 1 game, we played the move Bxc6 checkmate. The opponent quietly played PxB, and there was no mate. We were puzzled. As commonly happens, a perplexing problem usually has a simple cause. After Bxc6 there were 3 legal moves. Unfortunately,
I could probably recount dozens of similar stories. One that was particularly amusing was playing in a human event in the late 1970s. The first version of
As an aside here,
The next computer chess event for us was the 1985 ACM tournament held in Denver, CO. My wife and I had decided to leave the University of Southern Mississippi so that I could work on my Ph.D. degree. We planned on returning after that (I had expected 3 years away, maybe another year or two to complete my dissertation). Bert and I did some rushed tuning during the early summer knowing I would not have much time once I started the Ph.D. program. We played lots of games with
David Kittinger was the primary author.
Our next event was the 1986 World Computer Chess Championship in Cologne, West Germany. I could not get away for the period of time needed, so we worked out a solution where Harry would fly to Germany as part of a vacation with his wife. He would be at the tournament site and communicate with me via an over-seas telnet connection that I could use to relay moves.
We won the first round in our normal fashion. Then we played the program
Hans-Joachim Kraas and Günther Schrüfer.
By 1986,
A new, potentially dangerous opponent emerged:
We met them for the first time in 1987 at the ACM event. Figure 2 shows the critical position from the game:
Our “event” here was an unknown race condition that had not shown up on the older XMP machines, but which was just waiting on the right conditions when we got to the 8 processor YMP. The critical point came at White’s move 14. As we were searching, the move Ne6 failed high and looked to be almost crushing. Hsu was expecting this and said he was losing. But when

This was our last real chance to beat this program as every year afterward Hsu and company added additional chess processor chips and/or fabricated a faster version of their chip, and their search speed grew astronomically.
As the 1980s ended,
For each of the events we played in, we had to do a lot of scheduling to get access to a $50 million computer system. At times the hardware would be broken and we would have to scramble for a backup. At times building renovations at Cray would be a problem. It was really a struggle to balance all of that with trying to develop a stronger chess program. Even more importantly we needed lots of test time in light of the previous fiasco with tuning on a slow machine. As well, we needed dedicated time to test the parallel search changes that depended on fast hardware to expose race conditions. For a while, we made do with 2 am–5 am testing as that was all Cray could give us for multiple days. You knew we had a problem when I realized I was spending more time trying to set up test times than I did making changes to improve the program.
After the 1994 event, I decided it was time to do a complete code rewrite. This included using C instead of FORTRAN, ignoring exotic hardware like the vector operations on the Cray, and moving to the IBM PC type hardware that was getting faster. Within a month I had a new program running, one based on 64 bit “bitboards” as used by
I feel fortunate to have been around for all of the computer chess developments. From the early days where many computers could not even play legal chess, to today’s programs that are essentially unbeatable by humans, no matter how strong the humans are. In fact, we are now seeing handicap matches where GM players are given a pawn (up to a piece) advantage at the start of the game, in an effort to equalize them with the computer’s incredible tactical abilities.
After over 40 years of programming computers to play chess, one key point regarding
The “newest kid on the block” is
As always, even as this seems like the ultimate development in computer chess, it won’t be any great surprise to see something even better appear on the horizon. I look forward to seeing it, as it seems that the improvements will never end. We have almost reached the point where, if the computer could laugh, IT would now be the one laughing at the human grandmasters. What an amazing turn-around since 1970.
