Solving exam schedules using PySchedule

I'm in the process of creating an exam scheduler for my end of studies project. It involves a GUI for entering all the data and a solver that takes all the data and creates a solution.

After looking around a bit, I come to the conclusion that I cannot create a solver from scratch. There are multiple ways to approach that problem: genetic algorithms, heuristics and constraint programming. I chose to go with the last one mainly thanks to the next paragraph.

I'm quite lazy, so I went looking for the nicest library I could find that would handle as much for me as possible, no matter the programming language. And to my surprise, I found the perfect one: PySchedule. As you may guess from the name, It's a python library that does scheduling stuff. The maintainer is very active on the project and there are tons of examples.

I created a script that parses yaml files for a list of teachers/classes/courses and the links between them, and PySchedule happily solves it in under 0,25 seconds for the test data I have entered (see below). The test data is the data from the exam schedule of the previous year at my school, but only for the years 1, 2, 4, 5 and 6, which is half of what needs to be scheduled.

The source code for the entire project is available on the github repository, which includes the interface part built on top of Electron. The complete project should be fully working in 3-4 months, as I do have a deadline :p