Our inspiration to create a professor-side course scheduler came largely from a conversation with one of the professors in the EECS department, who noted that current scheduling for any given quarter is based largely around professors choosing a random time and hoping that it doesn't conflict. We wanted to create a simple interface which resolved this issue while allowing professors to maintain preferences and be able to manage their availability as much as possible, while minimizing class conflicts.

What it does

ScheduleMyClass resolves many of these issues by providing an interface for professors to enter their class day preferences and availability, and feeds this information into an algorithm which minimizes the number of conflicts between classes. It also scores the conflicts intelligently based on number of people potentially impacted, by taking into account the class content and size.

How we built it

ScheduleMyClass was developed largely in JavaScript and HTML. The website was styled using CSS and used the Javascript package DayPilot to compactly represent and update a schedule. The project is hosted using Amazon Web Services.

Challenges we ran into

Many of the challenges we ran into were algorithm-based. The main challenge was figuring out the best algorithm for this task; we started with optimization techniques, including linear and round robin scheduling, and page-table allocation, but they turned out to be too computationally intensive. We then took into account how professors usually plan their classes, which often occurs over a relatively long period of time. Therefore we changed our approach to a greedy algorithm that optimizes each step based on a score function that well represents the severity and impact of conflicts.

Accomplishments that we're proud of

This is the first hackathon for the entire team --- we're happy that we were able to get a project relatively completed. We're proud of the fact that we were able to implement a project in 36 hours that can have a real impact on the ways that professors (including ours) will schedule their classes, and how students can take more classes they want without worrying about scheduling conflicts.

What we learned

We learned a lot of technical skills through this process; namely, getting a stronger grasp of languages including HTML and Javascript. We also worked to play to each team member's strengths, cover each other's knowledge gaps, and help each other out whenever possible. Also, how to survive and enjoy a hackathon.

What's next for ScheduleMyClass

Better scoring function that includes statistical techniques to gauge the probability of students taking classes that happen concurrently; improving the interface to be more user-friendly through things like color-coding of class events.

Going beyond class scheduling, we realized that we could also contribute to the McCormick student community by creating a tool that not only assists people in minimizing class conflicts, but also make better informed decisions about the classes they want to take. This could be done through the use of statistical language modeling techniques on the available CTECs and departmental course descriptions.

Share this project: