Inspiration

We've always found searching for classes on the official systems a cumbersome process. Anyone who used solar to organize their class listings - you know what we're talking about.

What it does

SeaCourses is an alternative course search system for Stony Brook University. SeaCourses allows students to quickly search for classes with multiple filters, as well as see what their schedule might look like based on their selected classes. In addition, there is a very early pre-release alpha version of an automatic schedule builder - all one has to do is to write down which classes (s)he wants to take, and the system will automatically generate schedules for him or her. This system can of course be easily expanded to work with other schools' course systems, as long as it is given the correct data.

How I built it

We initially downloaded a pdf of all the courses available by Stony Brook for Fall 2015. We then used Nitro PDF to Text converter to convert the pdf document into a text document - we found trying to scrape a pdf with python to be a nightmare. We used python to scrape the text file, utilizing many, many workarounds to deal with the incomplete pdf-text conversion process. Afterwards, a mongodb database was populated (we used mongo simply because it is much quicker to get set up and we did not have the time to design a fully relational SQL database) and most of the class scheduling logic was offloaded to the client's computer via javascript.

Challenges I ran into

There was no official Stony Brook course information API - we had to scrape a PDF document, which was a nightmare. Building a schedule builder was also difficult, with organizing cells and actually generating an image (through thoughtfully colored HTML divs).

Accomplishments that I'm proud of

I'm quite proud of the python script I wrote to parse through the text document - I'm still not entirely sure how it works, but it's quite cool to see it in action, and actually work (deliver good, accurate information) for over 95% of the text document. I'm also pretty proud of building a rudimentary automatic schedule builder with the team - we hashed it together in the last few hours of the hackathon.

What I learned

Scraping a PDF is a nightmare. I'm also most productive at around 3AM. In all honesty though, I learned a lot of Python and the Flask framework the past few days.

What's next for SeaCourses

Finish the automated schedule builder. Add prereq/coreq support (it's in the database, just not supported yet). Add major/minor requirements - eventually, we hope to have a system where all you need to do is write down your major/minor and what classes you took, and the system can automatically suggest some schedules for you to keep you on track.

Share this project:

Updates