Fundamentals of Course and Room Scheduling