||CS 391 - Selected Topics: Game Artificial Intelligence
Without assuming a prior introduction to Artificial Intelligence (AI), we will
be covering the dominant lines of research thought behind todays most advanced
game artificial intelligence. In doing so, we will neither be
mathematically rigorous (e.g. glossing over proofs), nor comprehensive (e.g.
covering topics preceding or related to the main lines of thought).
Rather, guided readings are designed to bring the student most rapidly to the
forefront of modern game AI practice as exemplified at the Computer Olympiad and
conferences such as the "International Conference on Computers and Games" or
"Advances in Computer Games". While a broader, more comprehensive
grounding would have greater utility, the goal of this course is to bring an
advanced undergraduate Computer Science major most rapidly to the horizon of
current research, able to comprehend key questions, implement best known
algorithms, raise new questions, and create new outstanding computer players.
- To understand some of the dominant concepts in modern game AI, including
but not limited to Monte Carlo sampling, Reinforcement Learning, Monte Carlo tree
search (MCTS), and counterfactual regret minimization (CFR),
- To gain such understanding by reading original research articles,
discussing and presenting summaries of such in class,
- To implement relevant algorithms, gaining a deep, experiential
understanding of the key tradeoffs, and
- To further the broader learning objectives of the Computer Science
There is no text for this selected topics course. Rather, we will be
reading from a selection of freely available research
articles and online texts. It is especially important for students to
keep up with assigned readings, as we will be tracing through lines of thought,
and the structure of the readings will reflect such cumulative dependencies.
Lecture: T,Th 10:00-11:15AM, Glatfelter 112
Office: Glatfelter 209
Office Hours: Tu, Th 1-4PM or by appointment.
Note: Generally, feel free to drop in if my office door
is open (i.e., most of the time beyond class).
10% Quizzes / Exams
5% Colloquium Attendance
Class Attendance / Participation
You are responsible to know the material from each lecture and reading
assignment before the start of the next class. We may have some
unannounced quizzes to maintain accountability.
Homework is due at the beginning of lecture on the due date.
Late homework will not necessarily be accepted. Code must be a legal
program in the relevant language in order to be graded. (It need
not be free from logic errors.) For compiled languages, this means
that the program must compile without error. For interpreted languages,
this means it must be interpretable without error.
You are required to attend 2 colloquia or
approved departmental events over the course of the semester. Class attendance and participation is required. If you attend
all classes and are willing to participate, you'll get 100% for this part
of your grade. Even if you know enough to give a particular lecture,
please consider the value of helping your peers during in-class exercises.
Honesty, Integrity, Honor. These are more important than anything we will teach
in this class. Students can and are encouraged to help each other understand
course concepts, but all graded work must be done independently unless otherwise
specified (e.g. group work). Submitted work should be created by those
submitting it. Submission of plagiarized code or design work is a violation of
the Honor Code, which I strictly enforce. For detailed information about the
Honor Code, see
What is permitted:
- Discussing algorithms, syntax, and problem specifications with other
- Seeking assistance (as needed) from CS professors, students assistants,
and approved tutors
- Use of "starter code" supplied by your professor, or code you have
What is not permitted:
- Sharing code: Verbal dictation of code, transference of code (e.g.
e-mail, file transfer, entry of printed output, etc.). An important
component of this experiential learning process is developing the ability to
independently devise algorithms and express them in program code.
- Viewing and/or using unauthorized code (e.g. solutions found online,
downloads from code repositories, etc.)
- Submitting work that implicitly takes credit for work that should be
credited to others
- Efforts to obscure the source of unauthorized work
- Outsourcing work
Put simply, students may discuss assignments at an abstract level (e.g.
specifications, algorithm pseudocode), but must actually implement solutions
independently or in permitted groups. Credit should be given where credit is
due. Let your conscience be your guide. Do not merely focus on the result; learn
from the process.