If there is useful software (written by you or others or a
commercial product) that you determine
would help you to make an even better product out
of your project, you will need to consult
with the CS 3733 staff first to get approval.
And, of course, you are required to document any use of
existing software.
Each member of your group is responsible for understanding the entire project, including all software functions and all forms of documentation. Each member should be able to give the demonstration alone.
It is the group's responsibility to monitor the progress of the group and its members. All documents should be submitted as a group. The last section in each group submission should indicate the role of members and their percentage of contribution for each deliverable (e.g., coding, typing, revisions, ideas-contributors, no contribution). I do not expect relative contributions to be the same in each submission -- you may choose to divide up to work in any way you wish. However, across the entire project, everyone should contribute equally. And, the majority of the members of the team must be actively contributing to the coding - ideally all members.
By default, we will assign one grade to your team for the project. If there are disagreements in your group on how to assign credit to each member, then such continuing and unresolved problems can be documented in group member evaluations at the end of the term, if you choose to do so. In such a case, each member of the group will write an evaluation of each member's contributions, including their own. Each member's project grade may be altered, at the discretion of the professor and the Teaching Assistants.
If there are significant problems (unequal contributions) that persist during the project period and that you cannot resolve within the group, then please bring this to the attention of the TAs or the professor as soon as possible. We will also try to look out for "signs", but you will know much before we know ...
Each person should maintain a personal log of what percent of what work done on the project (day, time spent, work done) to help with determining your contributions to the project. There will be a section in your final report asking for this.
.
In addition, hardcopies of your deliverables must be handed in at beginning of the (due date) class as well.
All submitted documents must be of professional quality, not only
in content but also in format and style.
Grading will be based on both content and writing style.
Be brief and to-the-point, we don't want to read pages of superfluous
information.
Platform:
You will
demonstrate your software to your client at your client's location
(i.e., the CS 3733 staff - instructor or TAs -
and ultimately the whole class at WPI).
And, your client (another 3733 team) will be testing your software
for acceptance.
Hence, you are constrained to use hardware/software that is
compatible with
and easily accessible at University computing facilities.
Hence, a unix or PC-based development environment should be chosen.
You are responsible for all costs related
to bringing resources required to test your software
at WPI.
Some Sampling of Choices:
For PCs, you may want to choose
visual basic or visual C++ , as they have
pretty intuitive user interface
building tools built in.
For PCs, Delphi 2.0 is another very nice and fairly easy to learn visual programming tool for creating/adding interfaces. You can add the interface to _any_ type of code (Visual Basic, Pascal, C, C++). It requires some knowledge of Pascal.
If you choose to work with Unix/X-windows, then Motif has a good set of widgets for implementation of a user-interface. The following reference might be useful: Dan Heller, Motif Programming Manual, The Definitive Guides to the X Window System, Vol. 6, O'Reilley \& Associates, Inc.
Or, you may wish to use Tcl and Tk. Tcl and Tk
system is not as powerful as Motif, but simpler to use. It can
be ftp'ed from sprite.berkeley.edu. The newsgroup comp.lang.tcl
has
articles relevant to Tcl and Tk.
There is also a simple X library interface that one of
former CS grad students put together.
It isolates you from the ugliness of X, and provides
a small sampling of typical interface components (buttons, sliders, menus,
etc) without too much control over the parameters of the
interface.
V - a freeware portable C++ GUI framework for Windows and X at http://www.cs.unm.edu/~wampler is another option.
World-Wide Parcel Delivery Service:
Develop a system to support the delivery of packages to locations all over the world. Your system could provide a customer ordering service that takes orders as to where the package is to go to, the class of service, the content of the package, insurance, and so on. There could be an accounting agent that keeps track of the income and the expenditures of the company. We also need a distribution planner agent that takes in all the routing orders, and selects different means from a given set of connections for sending the parcel. This agent could know about local distribution sites, such as the number of cars they have in their fleet, the size of the area, the time it takes to deliver a given package, and then plan out which package gets assigned to which vehicle on which given day. Another sample agent in this system may be a tracking service that let's different types of users (including the customer) know where currently the package is located, and when it is expected to arrive. Many more functionalities could be added to make this a truly useful and efficient service, such as a trouble-shooting agent that determines locations with large bottlenecks and makes decisions about the redistribution of vehicles based on past usage loads.
Manufacturing Plant Control System:
This controller system could be in charge all the way from purchasing of raw materials, to scheduling the flow of the product through the product lines, over the execution a manufacturing run, to calculating the profits and loses of the business. For the purchasing side of things, your system could assume a limited capacity of storage room, a given set of suppliers for certain items and prices. The purchase agent then would have to make trade-offs between which purchases to make when by who to avoid spoilage of materials and to keep costs down. In addition, there could be a controller that has a model about the different tasks that need to be performed on a product during the manufacturing process, for example, finish up body, attach tires, put engine in, paint whole car. These tasks could have partial constraints about the ordering in which they need to be done. Given this problem, a scheduler would then determine flows of partial products through the different stations in the plant in order to most efficiently manufacture the required end products. Again, many variations and advanced functionalities are possible.
Distributed Economy of Travel Services:
This system may consist of a dynamic society of individual information services that assist us with our travel needs. One such stand-alone service may be a "map locator" that has a model of cities, countries, and their coordinates. It would also have characteristics about each city, such as, if it has an airport or not. This map locator could then answer particular questions about what is the nearest airport to a given city or what is the distance between two locations. A second service in such a travel world may be an airline server that provides flight information on one single airline carrier only, say the on-line Northwest page. Assume that such an airline server may only be able to assist you with how much it would cost to go from location A to location B, assuming A and B are both cities and both have airports. It may then return a detailed plan of the possible routes with the carrier and their respective costs. Of course, there could be multiple such airline servers for different carriers. In addition, we now may have many different intermediate services, such as, one match-maker that interacts both with the map locator agent to get sets of nearest cities with airports for the given source and destination and then interacts with different airline servers to find most suitable trips based on different user constraints. And, many other intermediate services could join this economy, such as, a comparison server to find cheapest or most suitable or non-stop service for a given subset of airlines.
Collaborative Work Space:
Here, we could think of some collaboratory virtual environment that allows a team of users (clients) to jointly work on some shared object of interest (server). This may for example be a number of scientists that jointly interpret and annotate some satellite images coming of a radar being maintained by a "digital word server", or it could be a number of world-famous experts in different aspects of architecture to jointly work on the design of a brave-new-world or let's say a major airport, or a group of students jointly working on their complex design document for CS3733. Services to provide may range from a browser client that can view the full shared complex object, to filtering services that provide a given user only with a filter subset of the shared object (e.g., only the blueprint of the building but not the actual materials used for each part), or editing service that allows a given user to lock, check out, and edit a portion of the shared objects while other users can only view the object and changes as they happen.
Reminder: The first deliverable (D1) will be to develop a requirement specification document, where you lay out clearly which core functionality you promise to offer to your client (say for a B), and which extra functionalities you may offer for an additional price (say for an A). You will have other software houses competing for the same contract. Hence, your goal should be to develop an impressive (really useful) but also functioning software. That is, you want to make a reasonable proposal as otherwise your client will have doubts on the feasibility of your proposal. Keep in mind that this is a one term course, and you want a project that can be fully developed and tested in 7 weeks.