The two main strategies that have been used to divide students into teams are described below.

Prior to Spring 2013, we had always let the students choose their own teams. Some students would come to class already knowing who they wanted to work with based on existing relationships, but many would find teammates during the first class session. Students would come to this class with information about their availability, math background and interests, and programming background. We would give the students guidance for criteria to consider as they formed teams and would help the students get to know each other by having them introduce themselves to the class or by doing a class activity. Then students would talk with each other and form teams in kind of a mad free-for-all. Once formed, each team would choose a first project and propose it to the lead instructor. The lead instructor had veto power on both the team and the project, but basically the teams formed themselves.

This team formation strategy allows students to make their own choices and take ownership. In theory, students are more likely to take responsibility for successful collaboration in a team that they have formed. This strategy typically works well for most students, but some find the first class session to be awkward and chaotic, and this has sometimes led to poor choices. The groups were locally optimal for certain students but weren’t necessarily the best overall configuration for the class as a whole.

In Spring 2013, we asked students for key information ahead of time via a web survey, and we formed the teams ourselves. We generally respected students' wishes if they wanted to work with a specific group of people, but we put most of the teams together. The key questions we asked students in order to guide team formation were the following:

- List the mathematics subjects (including relevant computer science and physics subjects) you have taken at MIT or elsewhere.
- List mathematics or relevant computer science or physics subjects you are taking this semester.
- Describe briefly any mathematics research experience you may already have.
- Describe any programming experience you may have (in undergraduate research experiences, courses, other).
- We will break the class into teams of three students each. If you already have team members in mind, please list them here.
- To help us form successful teams, how strongly do you agree to the following statements? (1 = strongly disagree; 5 = strongly agree)
- I like theoretical mathematics.
- I like combinatorics.
- I like physical applied mathematics.
- I like theoretical computer science.
- I tend to procrastinate.
- I aim to get an A in this class.

Our priority was to create groups with

**Similar interests (e.g., pure math, applied math, computer science).**We believe that one of the primary factors in team success is everyone’s interest in the project.**Comparable mathematical experience.**Ideally, each member contributes equally to the work that they do as a team.

The procrastination index played a secondary role. We were unable to match those perfectly, but we avoided matching a chronic procrastinator with someone who always finishes early.

Creating nine reasonable teams was a challenging process and took quite a bit of effort, so we were pleased and relieved that the teams worked extraordinarily well. Members of a given team seemed to have surprisingly compatible characteristics when we saw them in person. Even groups we were concerned about managed to produce papers on time and collaborate with each other. In retrospect, it seemed that the three weakest students were grouped into a single team, which raises a fairness question; if these students had been spread out, they might have learned more and gotten better grades. We would like to try the instructor-formed teams a few more times and see how it works, but we suspect that it is the right way to form teams for the course.