Inspiration

We were inspired by our recent experience with registering for classes: the interface made it impossible to plan a schedule let alone a good one, and then it was impossible to get those classes before they were all full.

What it does

NobelGT is a tool to help students experience with Oscar, the Georgia Tech registration system. It pulls course data from Oscar, stores it in its own database, then recursively solves for the user's needs and scores all possible solutions according the the user's preferences. For now, daily start and end times, the number of free days, and the geographical distance between courses are considered for scoring.

How we built it

We parsed the Oscar course schedule listing site using Node.js and Cheerio, and produced a JSON file from here. We used this JSON file and SQLAlchemy models we wrote to transfer the data to an SQLite database. We then built our application, based on Flask, using these models. We also developed three different criteria and matching scoring methods. All possible combinations of the selected courses are scored and stored in a priority queue to be displayed on the tables.

We got the nobelgt.com domain from Domain.com and an EC2 instance from Amazon AWS for our domain & hosting thanks to these respective companies' support of the hackathon. Both components are very important for our final product.

Challenges we ran into

Many of our data sources, like the Oscar page and the GT Building Codes page where we got geographic coordinates for buildings, are archaic. They are badly formatted and their HTML source is very very difficult to parse. This took a lot of time to perfect.

Accomplishments that we're proud of

We built an algorithm that can solve through thousands of possible combinations and score them within seconds. We managed to merge data from multiple different sources to be served on a single page, together. We had fun doing this as a team.

What we learned

Sometimes what we initially think to be impossible to do in a certain time may be achieved, and certainly sometimes the smallest things that we ignore end up creating the biggest problems.

What's next for NobelGT

NobelGT development will continue to include new scoring methods, better calculations, a better input UI, a better output UI, a landing page, and a class seat availability check that will guarantee you get into the class you want.

Source Code

You can find our source code, released under the MIT license, here.

Share this project:

Updates