# Project Group Assignment System

## Background

Teams/groups are used for conducting work in industry, government, and academia,
and the formation of appropriate teams/groups is important for the work to be successful.
In academia, although the easiest method of forming student groups is simply to let students form the
groups, there are significant problems with this approach,
especially the tendency to choose group members based on friendship rather than more appropriate reasons.
Another method is random assignment but this also is far from optimal.
The problem is to find the assignment of students to projects that optimizes an objective function.
The objective function might gives points to each student as follows.
For a student's project choices, for example, a student gets 5 points for getting his/her first choice,
4 points for second choice, down to 1 point for fifth choice.
Other attributes could be weighted appropriately.

Previous work in this area includes a program that uses a greedy search approach.
By this later time there may be other related papers, so a literature search is required.
Note that for a large number of possible group assignments this could be an NP-hard problem in which an exhaustive search is not possible.
For preliminary student project work on this problem see the team group assignment paper from
Research Day 2003.

## Project

This system will assign students (or company employees) to project teams where each student (or employee) lists his/her
- preferences for projects
- computer-related job skill experience
- preferences for the location of team meetings based on where the team member lives or works
- preferences for the day/time scheduling of weekly team meetings

See example preference form.
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) can
give different weights to the four criteria and request a different number of people to work on 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 spreadsheet or 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).

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.