Project 2
A Directory Facility for the Spine
Due: Wednesday, March 27, 1996
in Lecture

Using any of the search techniques from Chapters 3 and 4 of the text, and any of the code in /projects/shapiro/AIclass/Aimacode/search, you are to implement a directory facility for the UB North Campus Spine.

Your program is to take a sequence of inputs consisting of

  1. a starting building
  2. a floor of that building
  3. a destination building
  4. a floor of that building
  5. a choice of wheelchair, exercise, or standard.
and is to print an itinerary for going from the starting building and floor to the destination building and floor, without going outside. If the fifth input is wheelchair, your itinerary should not use stairs, if it is exercise, your itinerary should use stairs instead of elevators whenever possible, and if it is standard your itinerary should use stairs for going up one floor or down two floors, and elevators for bigger trips, whenever this policy is possible.

For example the input might be something like
Natural Sciences Floor 2 Bell Floor 2 exercise
and the output might be something like:

Natural Sciences Floor 2
take door to
NatSci-Talbert walkway Floor 2
take stairs to
NatSci-Talbert walkway Floor 1
take door to
Talbert Floor 0
take corridor to
Capen Floor 0
take corridor to
Norton Floor 0
take corridor to
Knox Floor 0
take walkway to
Student Center Floor 1
take stairs to
Student Center Floor 2
take walkway to
Bell Floor 2
Of course, neither your program's input nor its output need look exactly like this. This example was just to give you an idea of the kind of thing the program should do.

Your program should be "user friendly" and give appropriate directions and error messages, possibly including messages like "You can't get there from here." or "I don't know how to do that." or "I never heard of that building." It should not "crash" no matter what the user does. Consider using menus for input as well as or instead of free form input. Appropriate graphical interfaces would be especially nice, but are not required.

Notice that there are a variety of search routines and examples in the Aima code. You may load and call any of the functions there, or may copy and modify code from there with appropriate citations.

Also notice that there is a map of UB on the World Wide Web at http://wings.buffalo.edu/directories/building/, including a complete list of buildings. It is acceptable for you to gather data about the buildings and their connections cooperatively, but your project code and your paper must be your own.

It may be a good idea to start your program with full (or even partial) functionality and just a few buildings, and then add additional buildings and connections as time allows. If you don't finish the entire job, discuss in your paper what would be required to finish. Additional data collection is a better "future work" than program redesign.

Back to CS4/572 Syllabus.
Stuart C. Shapiro <shapiro@cs.buffalo.edu>