Project C: TeamMaker

Overview

The goal is to develop an application to assist in assigning members of an organization to teams

Client: Dr. Andrew Roosen, Smith 101F, 831-2413

Description

Many human activities require organizing people into separate teams. Businesses of all kinds, software development firms, and college courses such as CISC 475 are a few examples of organizations that regularly construct teams from their members.

Distributing people into teams is a hard business. To do the job effectively, various considerations must be taken into account. The exact considerations vary from application to application, but may include:

  1. constraints on the size of each team, e.g., minimum and maximum size
  2. considerations of the preferences of the membership pool, e.g., X really wants to work with Y (or X really doesn't want to work with Z), X really wants to work on project P (or X really doesn't want to work on project Q), etc.
  3. considerations of the abilites of team members, e.g., the team assigned to project P requires at least one person with a deep knowledge of GUI programming and all members of the team need to be familiar with Java.

The goal of this project is to develop an easy-to-use, configurable application to assist in the team formation process. The application must be able to represent and use considerations such as those listed above, though these considerations will need to be much more carefully specified and formalized. Note that some of the constraints are hard (a solution must satisfy the constraint) and some are soft (a solution is better to the extent that it more closely approaches some ideal). It is possible for some systems to have no solution (in which case TeamMaker should report this), or to have more than one solution (in which case TeamMaker should attempt to produce an optimal solution).

The application must have a plain-text/command line interface as well as a web interface. It should be possible for members of the class to log on to the application through the web and register their preferences, and for the professor (or manager) to log on and run the tool to generate and report the team assignments. Alternatively, the professor could just run the tool via a command-line and provide a text file containing the (appropriately-formatted) input data (students, teams, and constraints).

Technologies