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.

  1. 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?
  2. Pick one of the kinds of decisions you made while playing the game, and analyze how you think that you made it. 
  3. Analyze the AI behavior you saw during the game.  What did it do that seemed particularly clever, or particularly stupid?
  4. 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. 

  1. 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.
  2.  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:

  1. You must add a test in the code to print out when the world is completely explored, and stop the game at that point.
  2. 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.
  3. You must turn in the changes that you made to the code, commenting where you made changes.
  4. 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 tocreate 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