This is a continuation of one of last year's projects. Your task is improve the system. In particular, the system must allow the instructor to set for each project the number of students to be assigned to that project. The project description from last year follows.

Project Group Assignment System

The formation of appropriate groups is important for group work to be successful. Although the easiest method of forming 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 following appropriate criteria:

The system will collect information from student-completed 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.

It is desirable to show the resulting assignments through a web interface and allow the instructor to make final adjustments. Previous work in this area includes a program that uses a greedy search approach [1]. Note that due to the hugh number of possible group assignments an exhaustive search is not possible.

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