Homework
Here are the guidelines for turning in homework assignments:
- All assignments must be
turned in via email to cs395gai-staff@cs.northwestern.edu.
We do not accept hardcopies. Unless the assignment states otherwise,
your message must include everything that you are turning in as part of
the assignment: URLs to the material are not acceptable. Please use
Zip archives for compressing materials when necessary.
- All homework assignments must
be turned in by noon on the day that they are due.
- We will be grading your code
on style, quality, and how well it is explained, in addition to how well
it works. This includes your analysis of examples you have tested it
with.
- Homework assignments must be
done by individuals working alone, not in collaboration and not by
groups. You can discuss assignments in a general way with your
peers, but you must do your own programming. Turning in work that is
not your own, inaccurately describing the state of your code, or
other violations of academic honesty, will be treated severely.
- Given that this is an
experimental course and everything about it is quite new, we will be
sympathetic regarding deadlines. There will be bumps in the road,
and we appreciate your patience as they get worked out.
Homework 1: Assigned 4/3/05, due 4/11/05.
- Download the latest version
of FreeCiv (release candidate 2.0, from www.freeciv.org) and play an
entire game, from start to finish. What are your overall impressions
of the game? How long did it take?
- Pick one of the kinds of
decisions you made while playing the game, and analyze how you think that
you made it.
- Analyze the AI behavior you
saw during the game. What did it do that seemed particularly clever,
or particularly stupid?
- Install Allegro Common Lisp
for Windows on a machine that you can use (it is pre-installed on the
machines in the undergrad lab). Compile FIRE and run the shakedown,
using the archive of source code provided on Blackboard.
Homework 2: Assigned 4/12/05, due 4/20/05.
To do this assignment you will have to download and install the Listener
conversational NPC system, from Blackboard.
- Consider the following transcript
of a conversation, generated using shallow processing only:
KDF: Hello.
Fred: How do you do. Please state your problem.
KDF: I worry a lot about Bill Gates.
Fred: Shhhh! He-who-cannot-be-named might hear.
KDF: Okay, so how about vacations?
Fred: Please continue
KDF: We went to Costa
Rica over spring break.
Fred: What is Costa
Rica near?
KDF: It is near Nicaragua.
Fred: How long does it take to get to Nicaragua
KDF: Probably about six to eight hours.
Fred: Do you feel strongly about discussing such things?
KDF: No I do not.
Fred: Are you saying NO just to be negative?
KDF: No not really.
Fred: You are being a bit negative
KDF: I really dislike Frodo Baggins.
Fred: I had a Frodo once but it died
(a) The last response seems a bit off, even for an Eliza-based
system. What error did the author of the rule involved make?
[Hint: You will find the KB Browser very useful for diagnosis here.]
(b) Change the rule to be more sensible, i.e., to cover a broad variety of
cases via a single rule while still generating appropriate
responses. Turn in both your new rule and a transcript showing it in
action.
- As part of the AI
programming team on Sealab 2021: The Game, you are in a meeting
with "the creatives", who are brainstorming the next
conversational puzzle you're supposed to implement.
"Okay, here's the idea. The player is driving a submersible,
and they have to convince the guard to let them dock." says the team
leader. "There are two ways to get in. One is by having
the right password. The other is by social engineering."
"Hmmm." you wonder aloud. "How would the player know
what would get the guard to let them in?"
Another team member chimes in, "The bartender told the player that
the guard is a computer game fanatic. Also, in the submersible is a
game magazine with the guard's name on the subscription label. So
mentioning two or three games should be enough to identify yourself to him
as a kindred soul."
You think for a minute. Fortunately, there are a lot of computer
games already known in the KB..."Okay, I'm on it. How soon do
you need it?"
"By next Wednesday, noon." the team leader replies.
"Don't forget to make it really clear in the NPC's response that the
submersible is free to dock. Oh, yes -- if the player doesn't get
the guard to open the airlock in, say, 10 conversational turns, the guard
should get suspicious, sound the alarm, and not respond to any further
entreaties."
Implement the guard using the Listener toolkit, using shallow processing
only. Turn in your new rules file, plus three transcripts. One
transcript must show a successful conversation gaining entry via the
password, the second transcript must show a successful conversation
that gains entry by chatting the guard up about computer games, and the
third transcript must show an unsuccessful conversation, where the guard
sets off the alarm and refuses to engage with the player any further.
Homework 3: Assigned 4/29/05, due 5/10/05.
To
do this assignment, you must have installed the FreeCiv AI Player from
Blackboard.
Your
goal in this assignment is to extend the FreeCiv AI Player to explore the
entire world. Solutions will be
evaluated on the basis of (1) how
quickly your bot succeeds in exploring the entire planet and (2) how advanced
your civilization has become in the meantime.
Here is what you need to do:
- You must add a test in the
code to print out when the world is completely explored, and stop the game
at that point.
- We have provided three test
cases (Drylandia, Wetlandia, and Midroadia) on Blackboard for you to use
in testing your bot. Once the bot
has succeeded in exploring the world, save that game state, and turn it in
as part of your homework.
- You must turn in the changes
that you made to the code, commenting where you made changes.
- You must turn in a design
document, explaining your approach, the issues you found in implementing
it, a summary of your bot’s results on the three scenarios, and an
analysis of its strengths and weaknesses based on those results.
Homework 4: Assigned 5/16/05, due noon 6/3/05
Choose one of the projects below to carry out. You will need to turn in
- The
source code that you changed and/or added to the class distribution for
the appropriate system(s)
- Sample
save gamed states or transcripts, as appropriate.
- A
report that describes at least the following information:
- What
approach did you take, and why?
- How
you implemented it.
- How
well did it work? What are its
strengths and weaknesses?
- How
would you do it differently/better next time?
Project 1: Conquer the world. Extend the FreeCiv AI Player to handle
military operations well enough that it can win via military conquest, at least
some of the time, against three or more AI players.
Project 2: Reach for the stars. Extend the FreeCiv AI Player to enable it to
win, at least some of the time, via reaching the stars when playing three or
more AI players.
Project 3: Bomb Squad. Extend the Listener to create an NPC for the
Bomb Squad scenario we used in class.
(Hint: You may find that using both deep and shallow processing works
best, and you may want to implement the ellipses mechanism discussed in class
as well.)
Project 4: Build a
Wub. Extend the Listener to create an NPC for the Interstellar
Negotiations scenario we used in class.
(Hint: You will definitely find using both deep and shallow processing
useful in this task, as well as the cultural knowledge in the KB.)
Back to CS395-GAI home page
Last edited 5/26/05, by KDF