Inspiration
CAs have to budget their time during office hours to make sure everyone gets their turn. When office hours are overcrowded, it becomes difficult or even impossible to help everyone. This inspired us to create timely.ca, a service to intelligently schedule students prior to office hours.
What it does
The web interface allows students to select their availability in 15-minute blocks from within CA-specified office hours. Upon submission, the server stores the student's availability. Then, one hour before every office hour session, the server solves a max flow scheduling problem to optimally arrange the students into 15-minute blocks. The web app then sends a push notification to the student containing their scheduled time to reduce time spent waiting in line.
How we built it
We used Django to create the server and React, along with elements from Bootstrap, to create the front end. The scheduling algorithm constructs a graph with nodes for the students and each of the available 15-minute time intervals, as well as source and sink nodes. Each student has an incoming edge with capacity one (signifying that they will be assigned to at most one time interval) and outgoing edges with capacity one connecting to each of the time intervals that they are available for. Each time interval node has an outgoing edge leading to the sink with capacity equal to the maximum number of students allowed at office hours at once. With this graph construction, the max flow algorithm fits as many students as possible into office hours.
Challenges we ran into
We collectively had very limited front end experience. We found it challenging to learn the frameworks we used in time to meet the tight deadlines.
Accomplishments that we're proud of
The scheduling algorithm is simple and elegant, yet extensible. Our user interface is both aesthetically pleasing and intuitive.
What we learned
In retrospect, we should have added the proactive component of the back end sooner, since we had determined during the design phase that the RESTful server would not be able to handle the time-based notification distribution.
What's next for timely.ca
In the future, we hope to add functionality to timely.ca that will allow the entire class and the CAs to input their availabilities, then compute the optimal times to schedule office hours. We also still need to add input validation and the notification feature.
Log in or sign up for Devpost to join the conversation.