Project Group Assignment System

Information for Extra Credit Modification

A User Manual was recently created for the system and this will be the primary information source for this work. The instructor page of the Project Group Assignment System can be accessed with Email Address = and password = 456. On the right-hand side of the instructor page, the "Create Teams" and "View Teams" buttons are currently not functional, but making them functional is difficult so this task will be postponed to a later time. What is easier to do, and is the task for this extra credit, is to create another button that activates an appropriate underlying SQL statement to provide a view of the student choices. The view of the student choices should contain information similar to that in Project Preference Spreadsheet which was created manually from the underlying database tables. The new button, called "View Choices", should be the first one under "Manage Teams".

So that we do not lose the functionality of the current system, please copy all the files from to and work on the version in this directory.

Optimization Problem

The problem is to find the assignment of students to projects that optimizes an objective function. The objective function gives points to each student as follows. For a student's project choices, a student gets 5 points for getting his/her first choice, 4 points for second choice, down to 1 point for fifth choice. For a student's meeting location choices, find the best fit among the team members and give 2 points for a student having a first choice fit and one for other choices. For a student's meeting day/time choices, find the best fit among the team members and give 2 points for a student having a first choice fit and one for other choices. For a student's skill matches to the skills required for the project, give 2 points for each student's skill match. The objective function to be optimized is the sum of the points for each student.

General Information

This system will assign students (or company employees) to project teams where each student (or employee) lists his/her The formation of appropriate teams/groups is important for group work to be successful. For example, 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. When it comes to assigning students to groups, the easiest method is random assignment but this also is far from optimal.

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 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.