Inspiration

Getting all the classes you need in as timely a manner as possible. A problem which has irked college students for years. With this project we attempt to alleviate some troubles associated with finding your optimal schedule.

What it does

The program takes in a database (formatted .txt) from which the user enters a pool of tasks (in this case classes) they wish to fit in their schedule. These tasks can be marked as required, meaning they must be in the schedule, or optional, which will be added if they can be optimized. Optimization of the schedule is defined partially by the user through a system of weights and preferences. The final optimal schedule is then presented to the user.

How we built it

The bulk of the program is built in Qt5, a GUI framework for C++. Helper functions are written entirely in C++ and are called by Qt5 events. The scraper used to grab the default database (list of all UK classes and sections) and parser is written in Python using BeautifulSoup.

Challenges we ran into

The initial challenge was even getting the data set. Because UK does not offer an API to access its classes, we had to build a scraper to get the raw html of the course catalog and a parser to navigate the html at a tag level and put it into a standard form. Another core element of the program which proved difficult was the optimization algorithm itself. Search space trimming through boolean preferences was crucial to the algorithm. Despite this, schedule optimization is still NP Complete, making this a herculean task. Additionally each parameter had to be normalized and scaled according to its weight. GUI was another challenge, as neither of us had ever used Qt before. Exploring the Qt documentation was a major time hit.

Accomplishments that we're proud of

-Learning Qt within the time constraint with no prior knowledge -Coming up with a _ beautiful _ scraper -Combining back end and front end -Solves a problem that is incredibly frustrating to students

What we learned

-Cross platform integration

What's next for Schedule Optimizer 3000

-Finish rating system -Add graphical schedule display -Complete control algorithm -Extend project to other realms, esp. business -Possibly market to universities/businesses

Built With

Share this project:

Updates