Classy | February 2017
HTML, CSS, PHP, SQL (MySQL), JS (jQuery), Python
I have a love/hate relationship with Dartmouth. While I love the school, most of the tech infrastructure is horribly outdated, and mainly serves as something to be worked around, rather than a useful tool. Finding classes is just like this. You can search by department, and by time period, though you'll have to continuously go back and start a new search from scratch. The results are also poorly formatted, and miss out on providing valuable information, like median, a class description, and prereqs (all things you'd have to search separately for).
I was pretty sure that I could do better. I first considered this issue in my sophomore fall. I wrote a scraper for the ORC (the catalog that gives class descriptions, as well as some prereqs), and a scraper for the timetable for that term. At that point, I was using a pretty complex system that was just hardcoded into the PHP script. Despite how specific and obtuse the search was to use, it was incredibly accurate, and after creating it, it chose every one of my classes moving forwards.
This term, I realized it was probably time to clean it up so that other people could use it, and it would be easier for me to search using it as well. I cleaned up all of the scraping scripts to be easier to run, added in medians, and created a new interface. Currently, you can:
- Search by median
- Search by department
- Search by distribs
- Search by periods
- Leverage powerful points system for searching
- View all information in helpful format
- Filter out previous classes
The search interface that I built tries to straddle the line between usability and the power that I had over search results with my hardcoded solution. It allows you to add as many criteria as you want, for medians, periods, departments, and distributive requirements. For each criteria, you can assign a point value, and classes will be returned based on the total sum of the points for the criteria they meet. While it takes some initial explanation, the example and pre-filled search make it pretty clear.
I cleaned up the search results as well, to show median, period, prereqs, title and teacher, distribs, and an overview of the class, showing everything that goes into choosing a class. All that was left was to pick a name. I reluctantly settled on Classy, which was recommended by a friend, because I couldn't think of anything better. If you want to try out the site, follow this link. If you want to check out the source code on GitHub, follow this link instead.