Inspiration
As clueless college freshmen navigating the labyrinth of classes with cryptic names and descriptions, we felt that it would be extremely helpful to know which classes we would like before taking them. MIT and Harvard both already maintain a course evaluations database, but they only provide generic information describing the central characteristics of the student population, whereas students' perceptions of these classes vary wildly based on a number of intrinsic factors.
What it does
The program learns the preferences and abilities of each student while simultaneously learning how these characteristics affect how students perceive the classes they are taking. It predicts how students would rate classes before they take them and can be used as a guide for selecting interesting classes while balancing the weekly workload.
How we built it
The backend is a Python TCP server that uses collaborative filtering to learn both students' characteristics and the function mapping characteristics to predict ratings. It differentiates the matrix expression describing this relation and performs gradient descent to minimize the mean squared error between the predicted ratings and the sparse set of known ratings provided by student responses.
The front end is a static HTML website. It uses Javascript's WebSocket API to connect to websocketd, which opens a netcat process to route packets to the TCP port that the Python backend is listening on.
What's next for Predictosaurus
The next step would be to obtain public hosting for the Python backend so that Predictosaurus would be accessible to the wider MIT and Harvard community. As a machine learning application, it becomes more effective and generates more accurate results as more students submit their ratings to the database, so it is important that it is adopted by as many students as possible.
Built With
- collaborative-filtering
- css
- google-chart
- html
- javascript
- machine-learning
- netcat
- numpy
- python
- websockets
Log in or sign up for Devpost to join the conversation.