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...
Constraint programming would be a good start, you can also google nurse scheduling problem.
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/
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)
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/