We can recast this scheduling problem as a question about coloring the vertices of
a graph. Create a vertex for each course with a final exam. Put an edge between two
vertices if some student is taking both courses. For example, the scheduling graph might
look like this: