Undergraduate life can be a chaotic mess: From attending lectures to preparing for exams, an undergraduate student has to struggle with managing everyday tasks efficiently. However, with the gargantuan amount of assignments to complete, exams to study for, and reading material to digest, this can appear quite daunting. To this end, we wish to build upon existing course management systems (CMS's) such as Blackboard or Canvas and add features that can assist with creating a "battle plan" to tackle various assignments and exams.
What it does
The Zot-Calendars, our web-based application for HackUCI, obtains grade and assignment data either from an existing CMS API or manual user input, and provides suggestions on what academic task to prioritize. For demonstration purposes, we have provided a web application that obtains mock data containing a student's grade information and upcoming exam/assignment schedules. When the data is fed into Zot-Calendars, the application calculates priority numbers which is assigned to each academic task, then the tasks are sorted in decreasing order of importance. The priority numbers are calculated based on various factors such as due dates (for assignments) or exam dates (for quizzes, final exams, etc.), the student's current standing in the course, and the given assignment's or exam's weight in calculating the overall final grade for its course. Basically, the closer the deadline/exam date is, the closer the student is to losing or improving by a letter grade, and the bigger the weight of the assignment/exam is, the higher the task's priority number will be, and thus it will be presented earlier in the queue of tasks to complete or start.
How I built it
We worked with a team of two frontend developers to work on the GUI and web application features and two backend developers to design the data structures to store the relevant data that would be used to compute the priority numbers. The language chosen for backend development was Python due to its ease of use and understanding, simplicity of hooking up with frontend through flask and react, and both backend developers' proficiency in the language; the frontend development utilized the free library to design the web application with a modern look.
Challenges I ran into
The most challenging aspect of this project was the implementation of Frontend operations. While the backend implementation was relatively smooth, implementing frontend architecture and connecting backend operations to frontend operations was more complicated than expected. From deciding which platform to host Zot-Calendars on to finding ways to let the backend communicate data to the frontend, implementing the frontend aspect of the application was the most challenging part of this project.
Accomplishments that I'm proud of
This was the very first hackathon for most teammates. As such, we are all proud that we were able to develop a functioning application with the given time and knowledge constraints. We sincerely hope that this application can be dispatched and utilized to its full facilities in facilitating education among students who may be struggling academically.
What I learned
Before we began our projects, our teammates had little to no experience with frontend development. Towards the end of the project, after considerable online research for tookits and solutions as well as generous assistance and advice from HackUCI mentors, our teammates were able to expand their depth of knowledge in frontend development, from frontend-backend communication to GUI design for our web application. This experience has also taught everyone of the importance of efficient teamwork management and task distribution: Without efficient distribution of tasks among teammates, this application could not have been complete.
What's next for Zot-Calendars
Ideally, the data would be obtained directly from CMS such as Canvas; however, due to limitations with the API, for this hackathon we were unable to obtain grade data directly from Canvas as we intended to. In the future we would implement ways to read grading data in from other CMS such as Blackboard or Desire2Learn. Additionally, since this application only implements the student interface, we would like to implement an instructor interface to allow manual input to the system, should the instructor of a course wish to use Zot-Calendars directly as a CMS. This would call for additional features such as sending out alerts to students when Zot-Calendars notes a drop in their performance.