I think we might be doing more work than we have to. Our scheduler currently attempts to create schedules from a given pool of courses; I think that might be outside the scope of YACS. Right now the functionality that I thought we were targeting was getting boolean values for whether any given course conflicts with the student's existing schedule. I think that's a lot smaller of a problem, and we might be able to solve it in linear time using some form of hashing on the time slots.