Inspiration

As active members of the campus radio station, we wanted to contribute to the organization by automating a relatively complicated task that would normally take several hours of human effort to gather all the necessary information and then go through the process of trying to construct the schedule manually.

What it does

This program parses information from a spreadsheet containing responses to a Google form for those requesting a show slot. From there, we schedule each person into a possible show slot based on their standing with the station (in the form of service hours), what slots they would prefer to do, what other slots they may be able to do, what slots they absolutely can't do, and what slots are actually available.

How we built it

The project was made up of several parts: a data parser, a class containing five max-heaps abstracted to act as a single stack, a schedule object organized as a list of dictionaries, and a person object to manage information gained from the data parser. Each of these was written in its own separate file so as to allow simultaneous development from all three team members without running into git merge conflicts.

Challenges we ran into

Parsing input was much more difficult than initially expected. Being that the input data was more designed to be human readable instead of computer readable, and was inconsistent with regards to how variables were stored. Additionally, we implemented a system to reorganize specific parts of the schedule for applicants with equal preference for their assigned time and other available times in order to accommodate as many applicants as possible without sacrificing the preferred times of those with priority.

Accomplishments that we're proud of

The data parsing and reorganization were the most difficult aspects of the project, and required the most clever tricks/solution to get working. Additionally, we are particularly proud that the schedule output by the program is as effective at fitting everyone into ideal time slots as the actual schedule made by humans that this is intended to replace.

What we learned

All of the team members gained significantly more familiarity with Python data structures, as well as many of the language's intricacies that set it apart from other, more traditional languages.

What's next for Radio Schedule

Some potential improvements for the future are adding a GUI and improving the algorithm to find the optimal schedule given all of the preferences stated by the applicants, rather than just being on par with the existing human solution.

Built With

Share this project:

Updates