Booked [JK04] Automated group allocation

Project overview

The objective of this project is to devise an application (ideally in ruby), to group students into teams within which they are to perform a group assignment. At the very least, the application should be able to partition is class of n students in either mixed or same ability teams, each containing g or g+1 students. The input to the application will be a list of students with an identifier and mark (assessing ability) for each student. The output is a list of teams and the students within each team.

The project should explore various ways of making the group allocation algorithm more effective. These include:

  • Specification of a heuristic to compute how a mark assessing ability translates to potential to contribute. This involves specifying a function that takes a mark as an parameter.
  • Incorporation of equality and diversity objectives in the allocation process. For example, ensure that no team has exactly one male or exactly one female student in the team or ensure that all team has members of multiple ethnicities.
  • When given a list of other group work allocations, ensure that nobody is grouped with a person they were allocated with before.
  • Manual constraints that specify that certain pairs of students must not be grouped together.

How far you take the algorithm is up to you. The solution should work well for class of up to 400 students.

The focus of the project is the development of one or more good algorithms to tackle the group allocation problem, rooted in an understanding of relevant existing work, and to evaluate the proposed solutions rigorously. It is not important to devise a sophisticated user interface for this project: a very simple interface that takes a CSV file as input and produces an other as an output is perfectly adequate. Little is gained by making the UI more sophisticated than that.

Initial background reading suggestions

The group allocation problem is similar to a range of Computer Science problems, such as bin packing and approximation algorithms to tackle them. You might also wish to familiarise yourself with an introductory book on Genetic Algorithms as that is likely to be a potential effective approach to tackle this problem.

Who is this project for?

This project is suitable for both BSc and MSci students with an interest in Artificial Intelligence. Bear in mind that the focus of this project is the development of search algorithm to tackle a practical problem. If you are keen to do front-end development in your final project, this is not a project for you.

Questions about this project

Q: Can I discuss this project with you in person?

A: Yes, I have arrange a project Q&A session on Thursday 27 September, 18:00%—20:00 in Bush House (SE) 2.12. All students in an undergraduate Computer Science programme doing an individual project this year are welcome. I'm afraid it is not feasible to meet all students with questions on a one-to-one basis this week. I am supervising 11 undergraduate projects this year and usually receive 5-6 meeting requests per project on average (because most students explore a range of different projects). As it is simply not feasible to schedule that many meetings in a single week, a group Q&A session seems to me to be the fairest approach to meet everyone.