Inspiration
We have been going to schools in Fairfax County, Prince William County, and Loudoun County, and one of the most common annoyances that we see in schools are incorrect schedules. In fact, during one of our team members freshmen year, he was forced to take art instead of Spanish due to such mistakes. We realized that the method used to generate schedules was very ancient and not efficient, and we could use computer science to fix this problem.
What it does
Our code takes in information regarding the teacher names, the classes they teach, and how many periods they teach each class, and finds a valid teacher schedule. We then take in information regarding the student names, their desired courses, and alternate courses, and find valid schedules for each student based on teacher schedules.
How we built it
We used text files to get all the information for teachers and student, and created our data structures based on it. We then used a csp algorithm that generate both the teacher and student schedules, where failure is determined by not having teachers to teach a desired course during a specific period.
Challenges we ran into
We ran into challenges when trying to implement our code into a website since we did not have experience implementing python code into a website. We also ran into challenges when making sure the code works with any possible number of classes, students, and teachers.
Accomplishments that we're proud of
We are proud of having a working website that generates valid schedules based on its input data, and following constraints such as alternate courses and course sizes.
What we learned
We learned about incorporating python code with java script and how to make efficient and varying data structures.
What's next for High School Schedule
We will make it such that it can work with more constraints such as semester classes and classes that need to be clumped together, such as humanities and IBET. We will also make it more efficient so that the code won't take as long with bigger inputs.
Log in or sign up for Devpost to join the conversation.