The presentation portion of my classes is now the focus. I now have the task of figuring out which students should present which problem.

Here is my system for my calculus I and calculus III classes:

- I tell all students to try 12-15 problems the night before. The students do not need to successfully do the problems, but I want them to at least know what the problems are asking.
- Students submit presentation preferences to our online course management system (Moodle). They can submit as many or as few problems as they want to present, and they order them according to their preference in presenting.
- The morning of the presentations, I look at their preferences.
- I maintain a list of problems that each student has presented, which also lets me know how many problems each student has presented. I start by ranking the students by the number of presentations they have already done; the students with the fewest presentations get the highest priority. In case of ties, I go alphabetically by last name.
- I then give a number code to each student based on the student’s priority (“1” is the top priority).
- I copy the list of problem numbers that will be presented. In order of priority, I go through the students’ preferences, writing down the student number and the priority next to each of the problem numbers. So if the 3rd student wants to do problem 21 as her 4th choice, I would write “(3,4)” next to 21 (in practice, I write “34,” since I am lazy).
- When I have completed this, I do a greedy algorithm-thing. I start with Student 1, and assign her her top choice (which will be her first choice, of course). I continue with Student 2, giving him his top available priority, and so on. This ensures that as many students as possible present that day.
- I then try to shuffle things in an ad hoc way to make people as happy as possible.

This is nothing too impressive, but it actually took me a little while to come to this. I am envious of Andy Rundquist, who has the motivation to create a similar computer program for his students. There are a couple of reasons why I have not coded this up yet:

- This is still a pretty new system for me, and I think I might be able to improve it (or radically change how I do presentations).
- I
*like*doing this by hand.

Do any of you have suggestions on how to improve this? Better yet: just explain how you choose to assign students to problems.