Class Scheduling Using Constraint Satisfaction