Skip to main content

Scheduling classes

We have reached the point in the semester in which Department Chairs turn in our schedules for the next academic year to the Registrar’s office. Putting together a schedule is an interesting challenge in dealing with multiple constraints and moving parts, so we’ve [1] been talking about issues as a department since some time during winter break.

What are the constraints we have? Well, there are certain courses we have to offer. With forty or so majors graduating each year, we need two sections per year of each of the four or so [2] required courses, since those courses are either capped at 20 or should be capped at 20 [3]. Interest in a few of those is high enough that we need two sections in a semester [5]. We need to offer a few electives each year, both for students, who benefit from the broader curricula, and for faculty, who we have said can regularly teach electives related to their scholarship. Current demand is such that we need to offer at least two sections per semester of each of the three courses in our introductory sequence [6]. So, our first set of constraints, which are almost all fixed constraints, are our course offerings.

Fall: Two tutorials. Two sections of CSC 151. Two sections of CSC 161. Two sections of CSC 207. One section of CSC 208. One section of CSC 211. One lab for CSC 211. Two sections of CSC 301. One section of CSC 321. One section of CSC 322. One lab for CSC 322. One section of CSC 341. One special topics.

Spring: Two sections of CSC 151. Two sections of CSC 161. Two sections of CSC 207. One section of CSC 208. Two sections of CSC 213. Two corresponding labs. One section of CSC 216. One section of CSC 261. One section of CSC 301. One section of CSC 312. One section of CSC 321. One section of CSC 322. One lab for CSC 322. One section of CSC 341.

Now, we’re one of those crazy departments that believes that most faculty can teach most undergraduate courses, at least with some preparation [7]. But there are courses we’d rather teach. And, for sanity’s purpose, some repetition is good. So we have some constraints on who teaches what. We’re a collegial department, and we’re usually able to work out a reasonable load for each person. But once we’ve worked out those issues, the constraints feel fairly fixed.

Sam teaches CSC 151, 301, 321, and 322 in the fall, and 151, 321, and 322 in the spring.

Third-year faculty teach Tutorial in the fall.

Faculty member doing a research project on proofs teaches CSC 208.

Returning visitor teaches courses they taught the previous year.

Then we add some other constraints based on keeping faculty’s lives sane. Faculty with children in school may not be able to teach an 8:00 a.m. class because they have duties to transport their kids. Faculty generally shouldn’t teach two courses back-to-back [8] or teach at 11:00 a.m. and 1:00 p.m., since that makes it difficult for them to participate in lunch meetings. My early career faculty (and, probably, my mid-career faculty [9]) should have one day each week in which they can focus on things other than teaching.

If possible, faculty teaching Tutorial should not also teach MWF classes.

Sam should not teach courses at 1:00, 2:00, and 3:00 on MWF (violated).

No one has more than four different preps across the year (violated in at least one case if we count two 2-credit courses as separate preps).

Minimize the number of new preps across the year (violated in at least one case).

We want to allow our students to take reasonable sets of courses, so we try to make sure that we don’t put courses in conflict with each other if students may want to take both of them. When possible, we chat with allied departments about possible conflicts.

It should be possible to take CSC 207 and MAT 215 in the same semester.

It should be possible to take CSC 208 and CSC 161 in the same semester.

One of the important ways we mentor early-career faculty in this department is to teach pairs of classes, with the more-experienced faculty member teaching one section, the less-experienced faculty member teaching a second section, and a chance for each to observe the other’s section. Making sure that both are available at both times is an important constraint.

We will offer sections of CSC 151 in the 8:30-9:50 and 10:00-11:20 slots in the fall [10].

We will offer sections of CSC 207 at times that both faculty members can attend.

We will offer sections of CSC 301 at times that both faculty members can attend.

The College has limitations as to when we can and cannot offer courses. Most of those are not problematic, but some can impose difficult constraints. For example, we teach all three courses in our introductory sequence as four-day-per-week courses. We used to have four different four-day-per-week time slots available to us in the morning. Now we have only three. We have discovered [11] that four-day-per-week times don’t work well in the afternoon, because it’s almost certain that a student will have a science lab or a seminar during one of those slots. It’s enough a problem that I’m about to restructure our first course to meet three days per week.

We will not offer a course MTWF at 11:00 a.m.

We also have space limitations. There are three computer classrooms that the department controls, as well as one we might be able to share with Mathematics and Statistics, but don’t usually use because we prefer a different layout [12]. So we can’t really schedule more than three simultaneous classes, with the exception of CSC 341, which does not normally use computers.

We will not teach four courses at the same time.

We will try to put CSC 151 in 3813.

We must put CSC 161 in 3815.

We must put CSC 211 and CSC 213 in 3819.

Putting schedules together to meet all of these constraints, or to violate as few as possible, is an interesting exercise [14]. And then things change. We realize that a faculty member has a responsibility that doesn’t allow them to teach at a certain time, or we discover a conflict with another department. So I switch the time of one course. But moving the time of one course usually breaks a constraint (whoops! no classrooms are available for that class at that time), so I move another class, which may break another constraint (whoops! now we can’t have mentoring in this pair of classes), and the shuffling continues for a bit.

You might think that after all of that, we’d be done. But no, then there are guidelines from the Registrar’s office. I have to offer a minimum number of courses at some times of day (at least one 8:00 a.m. course and one 3:00 p.m. course) and a maximum at others (no more than two 10:00 a.m. courses). I should distribute courses with multiple sections between morning and afternoon [15]. I’ve generally thought about most of these in advance, but they sometimes change. For example, it used to be that we were told that 11:00 MWF was the most popular time block. It appears that it isn’t any more [16].

We will offer one section of CSC 207 in the morning and one in the afternoon.

We will offer one section of CSC 301 in the morning and one in the afternoon.

We will offer one section of CSC 213 in the morning and one in the afternoon.

We will offer one section of CSC 151 in the morning and one in the afternoon. (Nope, can’t do this one.)

We will offer one section of CSC 161 in the morning and one in the afternoon. (Nope, can’t do this one.)

We can try to have students attempt to understand pointers at 8:00 a.m.

We can try to have students attempt to do proofs at 8:00 a.m.

I then have to enter all of the schedule information in the Registrar’s official spreadsheet [17]. The Registrar’s office, as rules makers, want to ensure that we follow appropriate protocol in entering the data. The title must be just right. The time slot must be permissible. Only one time slot is allowed. We need to add notes for the kind of classroom we need, and more. You know what? I am much slower if I have to select all of those things from pop-up menus, as they’ve forced me to do, than I am when I just type [18]. And, as is usually the case with software, there are times the spreadsheet disallows something legal, and I have to find a workaround. For example, we are officially allowed to have two-hour labs (say, on a Tuesday). But, while there’s a programmed slot for Tuesday and Thursday, 2:00-3:50, there is no such slot for Tuesday, 2:00-3:50. But they have to be careful! I might enter an illegal time, like Tuesday 2:15-2:45, if they didn’t restrict me.

I spent tonight entering our draft schedule into the Registrar’s spreadsheet. It took me an hour. I wonder how long it would have taken if I hadn’t had to fight with the software?

Oh well, at least the schedule is done, at least until the next request for change.


[1] The department faculty have been talking about it since during winter break; I’ve been discussing issues with our SEPC since the semester started.

[2] It’s hard to count. Students must take: CSC 301, Algorithm Analysis; CSC 341, Automata, Formal Languages, and Computational Complexity; CSC 321, Software Design Principles and Practices, CSC 322, Team-Based Software Development for Community Organizations; and either CSC 211, Computer Architecture, or CSC 213, Operating Systems. CSC 321 and CSC 322 are each half courses. Students often want to take both CSC 211 and CSC 213. So I write Four or so required courses.

[3] A few are capped at 24. But we are one of the few departments at the College that allows over 20 students in 300-level classes; most cap at 18 or 12. Particularly for proof-intensive courses like Theory of Computation [4] and Algorithm Analysis, the larger class sizes make it harder to provide the detailed feedback from which students benefit. Maybe we should call them designated writing classes.

[4] Or Automata, Formal Languages, and Computational Complexity.

[5] We will be offering two sections of Algorithm Analysis in the fall and two sections of Operating Systems in the spring. Given predicted demand, we should look for a way to add a section of Computer Architecture in the fall and a section of Artificial Intelligence (elective), but I don’t think we have the staffing for that.

[6] The Registrar’s office and the Office of Analytic Support and Institutional Research say that we should find a way to offer three sections of our first course each semester. I don’t have the staffing for that, either.

[7] Physics and Mathematics are the two other disciplines that seem to be this crazy.

[8] Well, a few faculty members like back-to-back classes. But it’s generally not the best idea.

[9] Karla Erickson says that mid career is the time between tenure and retirement.

[10] Yes, that’s why I’m teaching 1:00, 2:00, and 3:00 classes in the fall. My morning is consumed by teaching 151 or sitting in on 151.

[11] By we, I mean the Registrar’s office, since I asked about this exact issue when the Registrar proposed doing away with Tuesday at 11:00 a.m. classes.

[12] CS designed all of its Linux classrooms in what I’d call a workshop orientation. The room has islands, with pairs of students facing each other. That makes it easy for the faculty member to wander through the classroom, looking over students’ shoulders as they work on problems. Math/Stats designed its primary Linux classroom in what I’d call a lecture orientation. All of the desks face the front of the room.

[14] I actually do find it somewhat fun, when I’m not fretting too much about it.

[15] I’m still not convinced that this is the best idea for our introductory sequence, lots of science students take those courses, and have labs in the afternoon. I’ve now gone through enough years of seeing others ignore this requirement that I’m much less inclined to follow it for our first two courses.

[16] Maybe that’s because the MTWF 11:00 classes are no longer allowed.

[17] Yes, I realize that I could ask my academic support assistant to enter the information. But it’s likely that they would need to ask me about some things, so I think it’s about as efficient for me to enter it. I also think it’s cruel to make another human being suffer through the process.

[18] I’ve found a few ways to speed up my work, including places in which I can copy and paste, rather than entering by hand.


Version 1.0 of 2017-02-15.