Inspiration

Phase 1 registration opens soon at Georgia Tech. Since many of us are busy, inexperienced freshmen, we wanted some help with building effective schedules. We thought it would be cool if we could build an app to generate schedules based off of some important criteria.

What it does

The user inputs a list of courses they want to take at Georgia Tech, and then ranks four criteria on a sliding scale: class start time, end time, time between classes, and balance of classes throughout the week. Then, the web app obtains course data from CourseOff and uses it to generate a list of all possible valid schedules. The list is then sorted by the different criteria and the top three schedules are presented to the user.

How we built it

The back end runs off of a Node.js server that interfaces with various Python scripts. The data is gathered from CourseOff using Python's Selenium bindings. The core of the app is simply a series of HTTP requests intermingled with Python calls. The front end is powered by Pug, a dynamic templating language.

Challenges we ran into

Our original plan was to incorporate GT's Oscar, and have the user sign in. Oscar is easier to pull data from and interface with, and doesn't require a browser emulator to use. CourseOff still has the course data, but interfacing and parsing the data was extremely challenging and still suffers from speed issues.

Accomplishments that we're proud of

For all of us, this is our first time working together as a team to produce an application, and none of us have deployed anything at this scale before, especially in so little time. Furthermore, this project is exciting to all of us due to its practicality and usefulness, and we plan to continue working on it after HackGT as well.

What we learned

Aman - I learned Python in a matter of 20 hours. All it took was a belligerent attitude, and a shameful amount of semicolons followed by a backspace. Dylan - I learned how to integrate multiple programming languages together. It was enlightening to see how JS, Python, and more interact to create something I personally plan on using. Justin - I learned more about full stack development, something that has always been sort a a black box to me. I managed to learn enough about Node and Express in a few days to at least know my way around HTTP requests. I plan to apply this knowledge to make many more web applications and improve my skills!

What's next for GT Scheduler

As soon as Oscar returns, we plan to transition to gathering data from it instead of CourseOff. This would also enable us to set up a secure login through Georgia Tech. Furthermore, it would allow us to host the server, which was made difficult by our reliance upon headless Selenium. We also plan to improve the algorithm by including more criteria, such as accounting for lab classes and recitations, as well as incorporating RateMyProfessor. Finally, we hope to make the web app more user friendly as well.

Share this project:

Updates