RIT Intersect Proposal
Currently, my pet project is The RIT Intersect- a way for browsing and finding new and interesting RIT classes. I have written a proposal for the application for a class I'm currently taking, Social Networks in Action. This proposal is going to change almost weekly, however I figured it would be a good way to "announce" my current project.
The Current Solution
Registering for classes is a necessary evil. We really don't have a choice, it has to be done. So, we make do with what tools we have available to us.Here's a quick roundup of what typical students would use while signing up for classes:
RIT Schedule of Courses [link] A basic list of courses with descriptions and times. Good for browsing if you know approximately what you're looking for. Sort by Department.
SIS [link] Used for registering classes, and seeing open/closed courses. Sort by Department.
CSH Schedule Maker [link] Made by a student (John Resig, who went on to create jQuery); probably the most innovative tool on this list. Sort by Time (or Department).
TigerReviews/RateMyProfessors [link, link] Currently, the only way to get feedback about a class or teacher. Useful for picking professors. Sort by Teacher (alphabetically).
Academic Advisor / Other Students Probably the best way to find interesting classes. Face to face contact. Can be sorted in any way. Not a complete "database", however.
My Proposal
My proposal is a numerous step process.
Step 1: Unlocking the data
First, the data needs to be unlocked. For example, authenticating users as RIT students is restricted to people on the RIT.edu domain (and requires a lot of code), and course listings are stored as static HTML documents. Not only do I want to make this data available to myself, I want to make it available to anyone who wants it- in the form of a public API. While anything I do may be a step in the right direction, there's no way it can be a definitive solution. I want to make it easy for anyone to quickly create their own way of sorting and organizing the data. This isn't a huge deal- I have to do all this heavy lifting anyway, I might as well make it public so anyone can benefit from it. This is a project somewhat separate from (although closely related to) my project for this class, and has already been accepted for ImagineRIT.
Step 2: Browsing Courses
Next up is the actual project. It's a big project, so it will have to happen in phases.
First phase is a way to browse courses. I want to make it as easy as possible to sort and filter them. There won't be any sort of social networking involved with this, however it's an important first step. I have a basic layout completed (although I'm pretty sure I'll be redesigning it) and a lot of the backend done- so this is about 50% completed already.
Next up is adding a social layer to the site. The most obvious way is to collect teacher and course reviews. Liz Lawley wrote an interesting piece about it , and I think he hit the nail on the head. To overcome these issues, it would be best to require that a user reviews every professor and course from the previous quarter before they can use the system. It's annoying (and analytics might eventually indicate that it's causing the application to lose too many users), however I feel it keeps things fair. I would reduce the rating to a simple "Do you recommend this professor/course? Yes/No/Not Applicable", and possibly have an additional few optional specific questions (rather than "Any comments?", something narrower like "Did the teacher grade fairly?"). The "Do you recommend this (...)" is more important than just providing a rating for professors, as I'll talk about in a few paragraphs.
Another way I want to add social layers is through tagging and grouping. For example, take a look at the innovation courses. The official list of courses has no way to group these seemingly unrelated courses, however someone could tag them as a group.
Step 3: Recommendations
Up until now, everything I've suggested has just been about collecting and showing data. Important, sure- but this where it gets "exciting." This is the whole reason I want to do this project is so students can discover which classes to take. Here's what we know so far: we know the major and minors the user is in, the classes he or she has taken, the classes he or she still has to take, and the classes he or she liked. We also know the same information about a ton of other users.
So, I can use this information to create a recommendation system. I'm going to load in data from the "Undergrad Bulletin", so the system will know what the user has to take, and what they can take. Then, I can compare each user to people similar to them (based on classes taken and classes liked), and find new classes that would match their tastes. Some recommendations may be based on classes the user has to take, while others will be based on classes that would fit their schedule and match their interests.
Step 4: The Future
I have a number of further plans for it, however I've already laid out more than enough for the next 10 weeks. Eventually, I'd love to develop this into an open source version of myCourses. I know that that will never happen, so I'm taking it one step at a time so that when I do lose interest, at least I'll have something people can still use. And that brings us back to my API. When I abandon the project (and I know myself well enough to know that I will- but not before the 10 weeks is over, I promise!), people can carry on and make their own projects without having to struggle through the hard stuff that's caused me to abandon RIT-based projects many times in the past.