So that we do not lose the functionality of the old system, all the files have been copied from utopia.csis.pace.edu/cs615/2002-2003/Team13/ to utopia.csis.pace.edu/cs615/2004-2005/Team6/Team13/ and new work has been done on this version.

To work out a solution to this problem, it is recommended that you **first implement
the computation of the objective function for an assignment of people to projects**.
Second, implement a **brute force approach** that tries all the possible combinations to find the optimal one.
If possible (this is optional), use a **genetic algorithm approach** to quickly find a near-optimal solution.
Finally, I recommend that you implement an **interactive method**
in which the user can move students among the projects and the objective function is calculated automatically
for each grouping of students into projects.

- preferences for projects
- preferences for the day/time scheduling of weekly team meetings
- preferences for the location of team meetings (usually based on where the team member lives or works)
- computer-related job skill experience including leadership and team-related experience

This project group assignment system will automatically assign students
to project groups based on the above preference and job skill criteria.
**The instructor (or company project manager) assigns weights to the four objective criteria,
the number of people needed to work on each project, and the skills needed for each project.**
The system will collect the preference and experience information from online surveys
to serve as input to a computer program that makes the assignments.
Program variables include the number of students per group and the number of projects.
The resulting assignments will be viewable through
a web interface and the system will allow the instructor to make final adjustments.
The algorithm should optimize the assignment of students to team projects based on the above constraints,
and each team should have a good mix of team member work experiences (leadership as well as technical capability).

Previous work in this area includes a program that uses a greedy search approach [1]. Note that this is an NP-hard problem and thus an exhaustive search is not possible due to the typically large number of possible group assignments. Therefore, it will be necessary to implement a sub-optimal optimization algorithm, such as a genetic algorithm, to perform the grouping. For preliminary student project work on this problem see the team group assignment paper from Research Day 2003.

The current system uses Cold Fusion to access a MySQL database. The system needs to be improved in several ways. The database needs to be cleaned up and the instructor interface needs the option of viewing the choices made by the students. Then, the algorithm (Java) that performs the actual grouping needs to be improved and properly implemented. Developing the algorithm is the most interesting and the most difficult part of this project. If this project is undertaken, more detailed specifications will be provided by the instructor.

[1] M.A. Redmond, "A computer program to aid assignment of student project groups," Proc. 32nd SIGCSE Technical Symposium on CS Education, pp. 134-138, 2001.