Inspiration
For decades, educational interventions have operated reactively, waiting until students encounter academic hardships before offering support. This approach often proves ineffective, as by the time assistance arrives, students may already have experienced significant setbacks. This problem inspired me to create the Student Grade Predictor which will help identify students at risk of academic hardship and help faculty intervene before students experience a setback.
What it does
The Student Grade Predictor can take in information of students from an entire school and provide faculty with a convenient interface with which they can monitor students' predicted academic outcomes. This will help faculty spot students that may have a downward academic trend and help these students through individualized interventions.
How we built it
I used scikit-learn to train a Bayesian Ridge model on a dataset by Cortez. The features that were used to train the model were meticulously chosen through correlation analysis and trial and error. This ensured that noisy features were left out and accuracy was maximized. The model predicts G3 math grades which is the third marking period grade of a student. The model assumes a trimester grading schedule.
I then created a website using WordPress in a docker container on a cloud server. I used docker because it allowed the easy installation of WordPress and its dependencies, and because it enhances security through isolation. I edited the website and added a student portal with which interested students can predict their own grades. I also added the main component which is the faculty portal which allows administrators at a school to monitor students' predicted grades. The faculty portal displays student names, emails, first marking period grades, second marking period grades and predicted third marking period grades. This allows them to analyze the trend of grades for a more informed decision for intervention.
I also created an Flask API using python to facilitate communication between the website and trained Bayesian Ridge model. This connection facilitates the function of the student portal as the information submitted there is sent to the API and the predicted results are then displayed back onto the website. Another use of the API is a Google Forms integration I made which would allow administrators of a school to send a Google Form to their entire student base, which when filled out, will relay the information to the API then to the website database and then is finally displayed on the faculty portal of the website. This API is hosted in a separate docker container on the same cloud server as the website.
Challenges we ran into
My entire project is centered around the dataset so I spent a lot of time finding the best dataset for my project, but I had a few problems along the process. I had to discard the first dataset that I thought would be useful because it included students' race as a variable. Because, after conducting thorough research, I discovered that such datasets could promote pre-existing societal biases and ultimately fail to achieve the goal of helping each individual equally. I solved this issue by finding another dataset that turned out to have even more variables without the inclusion of race.
I didn’t know what would be the best way to predict the data either. I initially thought a classification neural network would be the best because that’s what I had the most experience with. This type of model would output predictions for each grade discreetly from 0 to 20 (grades are out of 20 points). Meaning it would only predict whole points for a grade. When training the model, I realized that this approach made the model predict the grade completely right (a small percentage of the time) or completely wrong. Through this thinking process, I switched to a regression model which would try to predict the value of the student's grade as any number from 0 to 20 (a continuous output instead of the previous discreet one). This made it so that even if the prediction was wrong, it could be within a few percentage points of the correct answer.
Accomplishments that we're proud of
I am very proud of being able to create a full-stack application which accounts for the real-world implementation side of the project through the Google Forms integration and faculty portal.
What we learned
Going into this project, I only knew how to create a neural network for classification. I did not know how to do the rest of the stack such as the API or website. I had no idea how to integrate my trained models onto platforms that other users can interact with. Through this project though, I learned a lot about the "rest of the stack". I learned how Flask rest API's worked, using web endpoints that data could be sent through and received through from the front-end. I also learned how an SQL database works as the WordPress website uses one and I was able to learn how to store incoming student information from Google Forms into a custom table. I became experienced with how to host a website with open-source tools such as WordPress.
What's next for Student Grade Predictor
The main issue with the model is that for the prediction to be the most accurate, it has to be trained for each High School specifically. So, I aim to collect data from at least my own high school to be able to actually implement it into a school in the real-world. On another note, I aim to get an SSL certification for my website to ensure a HTTPS connection which will provide transport level security for data going in and out of the site. This is not a problem for data coming in from the Google Form though, only for the student portal.
Log in or sign up for Devpost to join the conversation.