Video Demo: https://youtu.be/TnMw7aPmSLs
For my final project, I created a web app using Flask to help the teachers at my french high school digitally keep track of their students' grades. First of all, the teachers sign in and out seamlessly via Google Oauth, using their school google account instead of having to create and remember yet another password. Once signed in, they can create classes, ensuring to provide a class code, a class name, a list of the students enrolled, and a colour that will later be displayed as a sort of banner. From there, they can not only view their classes and students, but go into the class, creating units to house class material that they plan on grading such as projects or quizzes. They can click on the individual task and cycle through students grading them by percentage based on the four criteria (CC, MA HP, C).
All data is stored in a SQL database called "data.db" consisting of five tables: classes -- holding class information such as the class code, name and colour, students -- holding student information in relation to the class they are enrolled in, users -- pertaining to the teacher's information like their name and google id, tasks -- storing units with their respective tasks and finally, grades -- storing the percentage for each criteria in every task in a class (as of now, yet to be implemented). This project also utulizes javascript on several pages to enhance user experience, by for example, creating or deleting table cells, adding input fields when certain options are selected and alerting the user if not all necessary form items are filled before submission.
I initially struggled a lot with JavaScript when I first started learning it. It was a completely new language to me and I had a hard time understanding the syntax and how to properly structure my code. Despite this, I didn't want to give up and I was determined to keep learning. I spent a lot of extra time going over the material and practicing different exercises and challenges. I also reached out to friends who were more experience for just a little guidance whenever I was stuck. It was a slow process, but eventually I started to get the hang of it. Through perseverance and a lot of hard work, I was able to overcome my struggles and gain a stronger understanding of JavaScript. Now, I feel much more confident in my ability to write code in this language and I'm excited to continue learning and improving. CSS was also really frustrating at times. I had a lot of errors and contradictions and it seemed like no matter what I did, I couldn't get my styles to apply to some of my HTML elements. It was especially frustrating because I couldn't tell what was wrong just by looking at the code - I had to refresh the page and see how it looked in the browser. This trial-and-error process was time-consuming and often resulted in me feeling discouraged and frustrated. However, I knew that I needed to learn CSS in order to create the kinds of websites that I wanted to, so I pushed through and continued to practice and learn. Eventually, I started to get a better understanding of how CSS worked and how to troubleshoot my mistakes. It was a process, but I'm glad that I stuck with it because now I feel much more confident in my ability to style websites.
I really enjoyed taking CS50. It was a challenging course, but the material was presented in a way that was easy to understand and the staff was always available to help. I appreciated the variety of assignments and projects, as they allowed me to apply the concepts I was learning in a practical way. The online community was also a great resource, as I was able to connect with other students and get help with any questions or problems I had. Overall, I feel like I learned a lot from CS50 and I'm excited to continue learning more about computer science in the future. A big thank you to everyone who has made this possible, you have made all the difference!