General Game Playing
Homepage
Sign In

Assignments Notes Videos Readings Resources Arena Piazza

Week 3

This week, we begin our look at techniques for playing large games, i.e. those for which there is too little time to search the entire game tree. We will look at both depth-limited and time-limited search with a variety of heuristics for evaluating intermediate game states (e.g. mobility, focus, and goal proximity). The key lesson of the week is time management - allocating time among different tasks and making sure that players get their moves in before the play clock runs out. Time management is one of the main themes of the course. Devote enough effort to this now, and you won't stumble over it later when you have other things to worry about.


Week 2

One week down, nine to go. By now, you should a sense of what General Game Playing is all about; you should be able to read and write game descriptions in GDL. You should also be comfortable using some of the resources we have provided, e.g. Gameplayer.

Week 2 focusses on game management and the rudiments of game playing. Your job this week is to create your first automated game player, put it to work playing some games, and then extend it to play small games effectively. Things are still simple in that you do not need to worry about time limits. Although all of our matches have start clocks and play clocks, the games are small enough that your players should be able to search the corresponding game trees in the time available. This is an unrealistic assumption in general, but the methods for dealing with large games are variations on the methods used for small games. So, it is a good idea to master those methods before moving on. In the weeks to follow, you will extend your player to larger and more realistic games.


Week 1

Okay. We are on our way! First week of class begins now.

Your primary responsibility this week is to form a team to take the course. Teams of three people are strongly preferred, but teams with two or four people are okay, provided that there are exceptionally good reasons. Invent a name for your team. Be creative. Some team names from the past: "Red Hot Chili Peppers", "Men Who Stare at Goats", and my personal favorite "Michael Genesereth". Create a suitable identifier for your team to use online - lower case letters, digits, and underscores only, e.g. red_hot_chili_peppers, men_who_stare_at_goats, and michael_genesereth.

Once you have a team, you need to create an account for your team. Unless you have already signed in, there should be a Sign In link at the top of this page. Clicking this link will take you to a sign in page. If you already have an account, you can use this page to sign in. Otherwise, click the Sign Up link to go to a sign up page. Enter your team name, your team identifier, and the email addresses of your team members and press the Sign Up button. (Please use your Stanford email addresses. Please use your Stanford email addresses. Please use your Stanford email addresses.) Your account will be created, and the team's password will be emailed to all team members. You can then use your team identifier and this password to sign in.

After you have created your account and signed in, you can access all of the course materials via links at the top of the course pages. There are links to assignments, notes, videos, background readings, software resources, the Arena competition management system, and a Piazza course forum.

From a practical point of view, the Assignments page is the most important. It tells you what you are expected to do each week - what you should read and what online tasks you are expected to perform. In addition to forming a team and creating an account, you need to do the tasks of assignment 1 this week.

And please use Piazza. It is a great way to communicate with your fellow students - to ask questions, to offer answers, and to discuss the course material. It is also the best way to communicate with the course staff. You should use Piazza rather than emailing us individually, as this allows us all to see your questions and/or comments and you will get quicker responses that way.


Welcome

General game players are computer systems able to play strategy games based solely on formal game descriptions supplied at "runtime". (In other words, they don't know the rules until the games start.) General Game Playing (GGP) is an interesting application in its own right. It is intellectually engaging and more than a little fun. But it is much more than that. It provides a theoretical framework for modeling discrete dynamic systems and for defining rationality in a way that takes into account problem representation and complexities like incompleteness of information and resource bounds. It has practical applications in areas where these features are important, e.g. in business and law. More fundamentally, it raises questions about the nature of intelligence and serves as a laboratory in which to evaluate competing approaches to artificial intelligence.

This course is a hands-on introduction to GGP. Theoretical background is provided through lectures and readings, but the main pedagogical value of the course derives from the use of this theory to create general game players able to perform effectively.

All of the course materials are online here. There are links to assignments, notes, videos, background readings, software resources, the Arena competition management system, and a Piazza course forum. Note that, as you proceed through the online materials, you may occasionally encounter technical problems. Apologies in advance for this. We are still working on the course. You may get extra credit for reporting such problems (especially if your reports are not especially irate).

The course is taught in "flipped classroom" mode. Students are expected to master most of the material using the online resources. There will be short lectures in class, but most of our classroom time will be devoted to discussion and demonstrations and competitions. Although the bulk of the material is available online, attendance in class sessions is mandatory. Classes will be held in Room 200-002 Wednesdays from 4:30 pm to 6:20 or so.

All work in the course must be done in teams; and, except in extreme circumstances, all team members receive the same grade. Grades for the course are based on (1) weekly assignments, (2) weekly competitions, (3) a midterm report, and (4) a final report. The majority of the assignments concern the development of a functioning general game playing program. Your program does not need to win competitions to receive a perfect grade; however, it must function correctly and illustrate the lessons of the course. That said, there will be extra credit for notable performance in competitions and in Arena. People who take CS227B immerse themselves in the course and do good work; and, with occasional exceptions, most receive high grades.

Mike Genesereth*
Email: genesereth@stanford.edu
Office: Gates 220
Office Hours: Wed 3:00-4:00 pm

Jeffrey Barratt
Email: jbarratt@stanford.edu
Office: Gates 219
Office Hours: Fri 3:00 - 5:00 pm

Robert Chuchro
Email: chuchro3@stanford.edu
Office: Gates 226
Office Hours:
Matthew Mistele
Email: mmistele@stanford.edu
Office:
Office hours:

Scott Ray
Email: nsray@stanford.edu
Office: Lathrop Learning Hub
Office Hours: Thu 2:00 - 4:00 pm

Vishal Subbiah
Email: svishal@stanford.edu
Office: Lathrop Learning Hub
Office hours: Mon 4:00 - 6:00 pm

Brian Zhang
Email: bhz@stanford.edu
Office: Lathrop Learning Hub
Office Hours: Mon 2:00 - 4:00 pm

* Genesereth wrote the original code base, first in Lisp and then in Javascript. However, he hates Java and Eclipse and obstinately refuses to become familiar with the details of the Java code base. He is happy to answer questions about General Game Playing and Computer Science, but he is unable to answer questions about Java code.


Comments and complaints to genesereth@stanford.edu.