Inspiration: Every year, we choose our courses for the next school year around February. However, we only get our timetables when the next school year starts, around 6-7 months later. This is because they create the timetables manually, which takes months for a school size of over 1000 students. We wanted to find a way of creating timetables for large amounts of people so that schools won’t have to go through the rigorous process of making each timetable individually. This inspired us to create Scheduly.

What it does: Scheduly takes in several inputs: the list of students, the list of all courses, and the list of all students’ 8 course choices as well their 3 alternate course choices, which are given to the student in the case that they don’t get one or more of their 8 main choices. Scheduly then finds a reasonable solution to every student’s timetable by using an algorithm to efficiently distribute courses to students in an ideal manner.

How we built it: First, we clean up the data so we can clearly see the courses available and how many people signed up for each of the available courses. Then, our program decides how many sections of the course the school should offer. Finally, our program places each student into the time slots, while attempting to minimize the number of alternative courses the program selects for each student.

Challenges we ran into:

• We originally wanted to generate all possible permutations of the courses in each of the 8 course slots, considering the fact that many courses occur at the same time as others. We then proceeded to find all the possible ways to add each student to each of their courses. With all the possible timetables generated, we would have a variable to keep track of each timetable’s “score.” Every timetable started with a score of 0, and each time a student’s alternative course or a course neither in their main 8 choices nor their alternatives had to be added to their timetable, we incremented the score. The timetable permutation that produced the lowest score would then be the best solution. However, we realized that with a total of 8 course slots and 25 courses, there would be way to many possible permutations of courses, and it would take too long to run on a regular machine. Therefore, we had to scrap this idea.

Accomplishments that we're proud of:

• Due to very few people attempting this task in general, there are very few sources we can look at to get inspiration for our project. In fact, we did not look at a single document online for this entire project. The entire project was written entirely by us, without outside help.

What we learned:

• From doing this project, we learned how to collaborate with others on a software project. We used git and Github to help us access each other’s files easily.
• We learned how to split tasks efficiently among us, which helped us considerably when we needed to use each other’s classes, as everyone finished each of their parts around the same time.
• We learned how to think of ideas on the spot. Throughout the duration of Hack the Hammer, we changed algorithms many times, each time managing to come up with something new.

What’s next for Scheduly:

• We plan on talking to our school and asking if they would like to use our algorithm to create future timetables. This would save time, effort, and frustration from not being able to make a satisfying timetable for all students. With Scheduly, this process would be done within a matter of seconds.
• If we have the computing power, we can use one of our previous ideas mentioned above. We can generate every possible permutation of all of the courses in each of the 8 course slots, and then we can find the best solution for the students’ timetables by tracking the “scores” of each permutation.