CS 3733 (D98) - Information on the Course Project

Projects Index:


General Information on Projects


For the purposes of this class, you are thus expected to work on a new project. This mean that you implement your system from scratch (not use as part of what you may have developed for another course).

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.

[back to Projects Index]


Guidelines on Teaming


There will be a single course project performed by teams of ideally 4 - 3 students each. Most software development is done in teams, so it is important that teams learn to work together. Teamwork can be a source of enjoyment and education; but it can also be a source of tremendous frustration. Cooperation within your group will be a major challenge of this term.

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.

[back to Projects Index]


.

Schedule of Project Phases


Below is a schedule of the different milestones for the course project. Each milestone is associated with the development or refinement of one or more documents. We will stick to this schedule. Minor adjustments will only be made if absolutely needed to rectify unforeseen problems. More details on what is expected as deliverable for each stage of the project will be given to you five days before each due date. Approximate due dates for Deliverables are given in the course schedule, while exact due dates will be handed out with each of the six assignments. The deadlines for the different milestones (Deliverables) of your project refer to when things are due at beginning of class, unless otherwise indicated. However, you may find it at times to your advantage to do things at a faster pace than the deadlines. If you submit anything earlier, we will try to get the feedback to you earlier.

[back to Projects Index]


Guidelines for Project Documents


Your group must create a group project homepage, in which each of the submitted six deliverables must be linked at the respective due-date. In other words, all documents must be in an on-line format that can be put on the web to give access to others. You must give a name to your company as well as your current product. Plus, we would appreciate seeing fotos of all your team members on-line, to help us associate you with your software products.

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.

[back to Projects Index]


Project Development Environment


Programming Language: Your team is strongly encouraged to work with an object-oriented programming language, such as C++ or java. However, it is your team's responsibility to learn necessary languages and tools as needed to conduct your project. Hence, your choice must take into consideration skills of members of your team. Get approval for your choices from the CS3733 staff.

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.

[back to Projects Index]


Recommended Group Projects


Below are several suggested project ideas. Each team is strongly encouraged to select one of the projects listed below. Or, if you develop your own, you need to come to our office hours on the first Monday of the term where you clearly lay out the details of your proposed system.

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.

[back to Projects Index]

[back to CS3733 course page]