How would one start to begin making such an scheduling algorithm? I'm asking for learning purposes. What should I be reading? Or their resources for basic such things...
You might want to research Prolog (since the Prologs tend to have good CS libraries), specifically Eclipse (not to be confused with the IDE): http://eclipseclp.org/
The next session will start March 4th 2014.
Probably not the best way but it's doable. In fact one of the exercises of the class I took was similar to that (matching Professors to Classes with their constraints and class constraints)