Last summer I created a Python app to simplify the process of making course plans for the next semester.
It features a course bin where one can add courses and filter sections to be scheduled. The app automatically retrieves and parses course information from USC Schedule of Classes page on user request using a Beautifulsoup based scraper.
The user can edit his or her preferences on the “preferences” page in terms of how he or she likes early / late courses, how much time he or she likes to have between sections, and when to have lunch / dinner breaks.
The app uses a depth-first search algorithm to find the conflict free schedules and rank them based on user-provided preference settings. Finally the schedules are displayed as lists of sections. Additionally, timetables generated using Matplotlib help users visualize schedules. The user can browse through the schedules and choose his or her favorite one.
In my experience it makes my web registration process a lot less painful. It is very good at making schedules I like: ones without 8 am sections and have lunch breaks. This is especially true when the sections started to fill up. I can simply deselect closed sections in the course bin page and the app gives me second best options in seconds.
- PyQt5, Matplotlib
- depth-first search
The code is available on Github. Feel free to clone and play with it.