Inspiration
When the theme education was announced it brought back nerves. Education is often associated with stress, mental illness, anxiety, because of the affects of school.
The team was all at one point negatively affected by the current school system and the mental toll that comes with the average day of a high school student in today's world. We saw how that trend of poor mental health and mental health resources only continued and worsened in college. Research shows that a high school student has the same anxiety as a 1950's psychiatric patient. According to the ADAA, 31.9% of adolescents had any anxiety disorder. The second leading cause of death ages 10-24 is suicide. Anxiety is the top presenting concern for college students, followed by depression.
We have all experienced the stress that school has. The stats seem like just numbers but they reflect individual experiences that we know very well. We feel like it is an area that is also often stigmatized, which creating an app that addresses it openly takes a step towards destigmatizing mental health.
So we decided the most relevant application of the theme, because of how it related to personal, but shared experiences. This app's goal is to ease that unnecessary stress that students feel.
What it does
This app uses machine learning and takes in data from a user's past test scores, their average study time, and any past failures to give a 95% accurate grade prediction. It also features a study time calculator which tells you how much you need to study to get the grade that you want, based on the EOP study formula inspired by UC Santa Cruz. It also sends automatically emails to you and your friends if your mood is less than ideal. Another feature is that you can insert a date and it will remind you, for tests and important events. And displays a massive assortment of mental health tips.
How we built it
All of the coding was done in Python: The GUI: We used kivy and kivymd to design the GUI. This was a good choice for us because, it can be used to write cross-compatible code. In the application of our App we would want this to be as accessible as possible, so it just needs to be complied in different steps to put in on Android and iOS.
Grade Predictor: Trained LinearRegression model on datasets on UCI's repository. Trained on the same attributes that are inputs in the App to improve accuracy. Used pandas and numpy for formatting the data. Stored model with best accuracy on .pickle file to be used within our app Used sklearn for training and predicting based of our dataset
I learned about some use of machine learning. When trying to figure out what kind of algorithm to incorporate, I researched the broad applications of the algorithm in order to maximize accuracy of the datasets. Learned about Clustering and SVM, then to finally settle on Linear Regression.
MoodCheck: created function to return a value -1 - 1, based on the mood selected. If the user had an email of a friend and the value got to -3, it would send an email to the friend using smtplib and a free gmail account created for the app
Challenges we ran into
When we decided to use kivy for the GUI we knew it was a leap, because none of use had used it before. The biggest challenge in the GUI was learning the custom kivy language, because we couldn’t start developing the GUI without some basic foundation in this.
Checking Input. We obviously had to check for user error within the input sections, but because of the way the kivy language ties into the main python file it makes it a huge learning curve on how to format things so that you can access elements.
Language Barrier, ---> Development Time One of our teammates had not coded in python for a year. So that combined with learning a new language was a hurdle the team had to work around. Learning stages seem like areas where we would go hours without getting anything done, but then later get alot done. So it was a point of what in the original app idea do we have to cut? And then what can we keep? An all-nighter solved those.
The navigation drawer There was an error in the source code of kivy that was beyond our knowledge on how to fix, but realizing in was a python version and error and not with kivy, was one of those little things that caused huge problems and hours in spending time figuring out things we didn’t do wrong (except the python version installation on the VM)
Accomplishments that we're proud of
The crown jewel for us in this application, although not being very technically difficult, was being able to learn the kivy module and still finish the project to what we considered personally as an acceptable state.
Machine Learning Algorithm. I (Quentin), had not started coding until almost a year ago. I had not started coding til last year in CS class, but now that I finally learned how to implement a machine learning algorithm after seeing other people do it successfully and looking at them in utter amazement, being able to set it up and get it working for the application, gave me pride.
The Navigation Drawer. The navigation drawer gave us so many problems. We had to have re-coded it at least 3 times, in three different ways. But this really goes back to the kivy language because we didn’t know how any of that worked, and didn’t do our homework enough to install the right version of python on the venv, once it was working with no issues it was such an utter relief.
What we learned
We learned the kivy language and more about python inheritance as an object oriented language. It also taught us alot about python and how it complies compared to other languages. But it will be a good skill for the future.
Anything is possible with enough caffeine. We couldn’t have done this without iced tea and coffee because if it wasn’t for an all nighter it wouldn’t be done.
The importance of communication. We caught ourselves doing the same thing twice because we weren’t talking as a team like we should’ve been. After having a team meeting, that solved things and we were able to research and work on our own parts better.
GitHub: Two of us had never used github before. Now we know!
What's next for MindManager
Figure out cross compatible solution for the email sender. Possibly with a socket server set up.
Login Screen. This would create a form and store stuff in a server.
Display stuff on calendar and access permission from settings based on the os.
Cleaning up the GUI, making the colors change better where they need to, as we switch themes some buttons don’t switch. The little things like that to make the GUI as beautiful as it can be will help the application deliver better
Studytime algorithm would be more accurate as a sigmoid function. Figuring out how to find that in order to give more accurate results. We could also take more data points here
KeepToPurpose: Stress Reliever Cards that give activities for whenever that user is stressed out. ADMIN, USER relationships, so that schools could use the app, to care more about the mental health of the students.
Log in or sign up for Devpost to join the conversation.