Although our course scheduling solution may sound good in theory, it has a few problems when we begin to apply it to a real world setting.
Our algorithm does improve the total utility that a given student body gets, but it does not take dependencies such as prerequisites or workload into account. For example, if a student does not want to take OS and Comp Arch in the same semester, it is possible that our course scheduling algorithm will sign them up for both of those notoriously difficult courses in the same semester.
It is also infeasible for students to rank all university courses when the amount of courses increases to the order of hundreds of courses. Many students wouldn’t even want to rank their preferences among 30-50 courses, let alone the hundreds of courses available at UVa. Thus, it is fair to say that our algorithm would not scale well as it stands.
Observing our algorithm from an economic perspective, a course scheduling system that attempts to increase total utility within the student body would also render programs like the Echols Scholar Program obsolete, since the main reason that students sign up for those kinds of programs is to get priority on classes that they are most interested in.
In general, our algorithm does not take a number of factors into account, including time conflicts, time for meals, maximizing days off, or any other factors that a given student may be trying to account for.
All in all, while our algorithm has its benefits (e.g., trying to maximize total utility across a university's students), changing the course scheduling system from its current form to look something like our algorithm could be very costly, and would most likely disrupt a lot of facets of the current academic system that UVa has in place. If we are to move forward with our project in the future, we would work to find solutions for all of the above problems.