3 April 2001Design due
5 April 2001Stubs due
17 April 2001Complete implementation
19 April 2001Integration due (demo)
24 April 2001Modified implementation
26 April 2001Integration due (demo)
3 May 2001Demo as ACE Server


The Quo Vadis (QV) corporation has commissioned you and two of your classmates to construct a Path Server. This server will accept a representation of two locations and return the directions for navigating between them. Examples of this kind of service might include: QV is interested in saving the consumer time. Thus, the path computed will be a shortest path, of the kind you have studied in CS 241. This project will occupy the rest of the semester, and it will consist of four parts:
Design, team formation, and stub construction (1.5 weeks)
  1. You will each arrive at a design in the form of an API, specifing the classes and public methods for this application. Your grade consist in part of how well you conceive this design. Elegance, balance, flexibility, and attention to necessary detail are the criteria by which you will be measured. Your design must decompose this problem into three, roughly equal parts. Let's call those parts A, B, and C.
  2. You will then form yourselves (or be formed by me) into teams of three people. You must stay with this team for the rest of the semester, so try to pick people with whom you feel comfortable collaborating.
  3. You will then each be assigned one part (say, part A) of the problem, based on the design, and you will be responsible for implementing a stub for that part. The stub should take you no longer than a few hours to finish. It looks and smells like it works, but it is a total sham. Enjoy this while you can.
Implementation (2 weeks)
Now you will pick up a different part of the problem (say, part B). You will fully implement part B. You must declare a flight plan for your implementation, so that you can test with your parters along the way. Your implementation grade will be based on elegance of your code, documentation of the relevant choices you make, and evidence of your testing along the way. At the end of this phase, you will fully integrate your team's pieces into a working program.
Variation (1 week)
Ah, this was easy up to now! Your humble instructor and TAs will at this point announce last-minute, world-saving, must-be-done, unanticipated changes to the design for this problem.

You will pick up one of your partners' parts (say, part C), and you must change it to achieve the desired effects of the spec modification. Your grade will be based on your critique of your parner's code (be ruthless---it will help your grade and won't hurt your partner at all) as well the way you manage to adapt the code to the spec change.

Server (1 week)
Lastly, you will make a server out of your path-finding program and write a client to go with it. You will do this using the ACE middleware, which will make your client/server both easier to write as well as portable.

Design (due 3 April 2001)

Form your team, and work on a design together. Turn in one design per team, but have each student sign the submitted design. The design should be in the form of well-commented .h files. Your grade will be based on completeness, elegance, and independence of specification for the pieces described in class.

Stubs (due 5 April 2001)

Turn in stubs for your .cc files. Each stub should be very easy to write, and should exhibit minimum functionality for its method. For example, if a method took in a list of numbers and was supposed to sort the list, have the stub for that method return the list (1 2 3 4 5) no mattter what its input was.