Chapter 1: The Idea
Alan Kotok: In the springtime of ‘59, John McCarthy first offered a programming class for freshman and it was focused on the IBM system in the computation center, which I guess at the time was a 704 or some, you know, room filling machine, vacuum tube machine. Went to McCarthy along with a few friends and said, you know, we'd like to do some, you know, do a project here, what do you have, you know, is there anything you could give us and so he said well I've been working on this chess program. I haven't really gotten very far, you know, I have some move routines but, you know, if you guys would like to work on this, you know, you're welcome to.
So there were three or four of us who picked up this project, like the summer of ‘59 I guess it was, and we worked on it as a sort of a undergraduate research project for the next three years. So there was just a tremendous amount of work to do just to get all the rudimentary things you needed to actually mechanize the playing of the game, determining what moves were legal, trying to form some static evaluation functions of positions and so forth and so on.
So we started putting together, you know, just a whole lot of sub routines, we soon concluded that Fortran had so many inefficiencies that at least the routines that ran very frequently were called, you know, thousands of times per move, had to be written in machine language and so we dropped down to assembler language for quite a number of routines.
McCarthy proposed to us what was known as the alpha beta heuristic which limits the necessity to search down directions which have already been demonstrated to be--there are better alternatives and so forth. And so we would come in, you know, in the middle of the night and after they had run their batch streams for the day or something like that, we would come in and take over the machine because the chess program, you know, we would try things and see how it would work and then try to tune the program a bit and come back and run more tests. So we burned a lot of midnight oil in those days.
Chapter 2: How it Worked
Alan Kotok: What the basic scheme was that we would at any given point we would generate all the legal moves so you'd look at each piece and all the places that it could move and build up this big list of moves and then we would-- we had a very quick evaluation function that would try to just order these moves in terms of plausibility and then depending upon how deep we were, we would take fewer moves as plausible on each level so we had this algorithm that tried to come up with plausible moves based on a simple evaluation and then try that move and see where it would go and again later apply this alpha beta heuristic before going further. We talk about plies which were half moves so we would, you know, flip the algorithm over on each half to optimize for black or for white.
I think what we found was that going more than about 4 full moves was beyond the computing capacity. So we did actually, you know, try to play games and it just wasn't enough computer time; you couldn't play by chess rules in terms of tournament rules of you have, you know, 2 hours to make 50 moves or whatever if that's the right number. The computer was just much too slow and so we would play for a while until, you know, it became evident what was going to happen and try to reach some-- learn from the mistakes the computer made and try to tune up the algorithms in the process and so what I always characterized the ultimate state of that program was “beats rank amateurs” and if you were at all a tournament chess player you would have no problem.
The way we controlled the program during the games that we actually played was that because there was no typewriter, there was no online, you know, keyboard on a 709, we would print out on this humungous line printer that they had, the list of all legal moves with their number, just numbered from 1 to N and then you would key that number in binary in the console switches and push the start button. So the computer would end it's move by doing this printing and just stopping. waiting to be restarted to read the number out of the console switches so some would say ok “I'm gonna reply to your move by, you know, knight to king bishop 3 and we just go knight to king bishop 3 that's move 27, let's see 27 in binary is”, you know, keyed it in and pushed the start button.
Chapter 3: Fun and Games
And so one night we decided to set up a hack, we were really into hacks that was reminiscent of these 18th century computer machines, I mean chess-playing machines, you know, the man in the box kind of machines ok.
This was a high tech version of it and we had decided we were going to try to do inter-machine communication and so we had set-up a coaxial cable that ran back and forth from the PDP-1 which is in one room to the TX-0 which was in the adjacent room and we said “well now we've got this working, what are we gonna do with it?” and we said “ah we're gonna have a chess program” and so we put our chess experts in one room and all this program did was you would type a line on the terminal and it would print it on the other terminal and vice versa.
And so I was the person who sort of watched the hallway ‘til an appropriate sucker went by and so I finally found someone appropriate and dragged them in and said “you gotta see we've got this new chess program on the PDP-1”, you know, “it's really good”, you know, “wanna try playing it” and he said “oh yeah”.
So we had the chess board set up and so he would play and I would type the moves in and, you know, the printer would in due time print the other response and we got quite a ways into this and he was really impressed. Until at some point the chess board in the other room somehow got out of sync with the board we had in our room, so there was, you know, an illegal move and I said, “illegal move”, you know and then he started arguing with us ok and he said “hey what's going on here”, I said, “get outta there quick”, you know. He said “what's the wire”, you know, so he goes running into the other room as I come running out so but he had clearly been taken in.