Should have posted this more than a year ago. This was a project for my grad-level Parallel Computing I class with Professor Alan Kaminsky. The goal for this project was to run massively parallel algorithm on cluster machines at RIT Computer Science Department to provide better final exam scheduling for students with different preferences and course schedules.
RIT has approximately 16,000 current students and offers roughly 3,000 sections of courses per quarter. The problem of generating a comfortable final exam schedule for all students becomes fitting 3,000 final exams into 20 time slots during the finals week. The number of possible permutations, 20^3000, is astronomical. We hope to show that a parallel approach will offer a significant performance benefit over a sequential approach for this problem.
The final exam scheduler is an application that will to compute an optimal final exam schedule for RIT students. The program will use a list of course offered by RIT and cross-reference them with the class registration of students. In order to find the best schedule, we will devised a ranking algorithm to score each schedule on various criteria and the resultant schedule should be close to an optimal solution.
Source and Report
We used Simulated Annealing, Genetic Algorithm, and a plain permutation approach as baseline. Source and report available at our repository: https://github.com/ziyan/final-exam-scheduler