Inspiration

We are a group of university students from Nanyang Technological University Singapore(NTU). Due to the rigor of our chosen course and education system, we often find ourselves swamped with a variety of different tasks to do. There are many lectures to keep up with, pre-reading and exercises to accomplish before watching these lectures and finally the tutorials and labs to make sure we are up to par with the exercise. Some of these tutorials are also only doable after going through the week’s lecture that is only a day or two away from the tutorial date. This is just for one week only. Repeating this continuously hectic schedule for 13 full weeks of this continuous hectic schedule, it is very easy for individuals to be swamped with work. This scenario is very familiar to many students around the world as they are often trapped in this cycle of work and stress. Note that it does not just apply to university but all levels of academia as well. Education and the stress it brings is something that many students face throughout the world. As such, we ideated around the theme of “Streamlining Solutions for Global Challenges” and decided to take it upon ourselves to make a scheduling application that allows users to better manage their time. There are a lot of different apps that can do this, but we have managed to find a way to innovate on this idea so that it will be much more helpful in developing routines for students. This supports students in staying committed to their tasks and to also adapt their plans and routines accordingly despite unplanned disruptions or changes to their schedule.

What it does

The separating factor between this scheduling app compared to others in the market is that it is able to produce a schedule/timetable for the user to follow and adjust accordingly. Users will log their tasks into the app, which are split into two types: fixed and dynamic. Fixed tasks are like recurring events, think of them as weekly lectures or tutorials etc. Dynamic tasks are the ones ordered on priority, expiry and time taken. This is the key feature of the app. After the user keys in their recurring events into the calendar, any dynamic task they key in will be sorted into the timetable for the week. This was achieved using a constraint optimizer to sort the events according to the priorities and deadlines attributed to it. The timetable gives users a well thought-out schedule to follow and allows them to properly plan out the time needed to handle the work and deadlines they have. Users will have the option to choose from 2 different modes, one where there are regularly scheduled breaks in between the scheduled time slots. The other prioritizes accomplishing tasks and minimizes breaks in between. This gives users the flexibility to choose the working style that suits them the best.

How we built it

We narrowed it down to using Python to build the project as it was a simple language and contained the Pygame library, among other necessary modules. As none of us had any experience using the Pygame library, we squeezed out free time from our hectic schedules to learn more. Using these modules, we found that they were perfect to help us implement this idea for making the different parts of the code, such as the UI for the app, date and time access as well. We created a multitude of different classes and subclasses for the different type of events inside. The datetime library helps us to assign attributes to the different events and is also the backbone of the sorting algorithm that we have. Pygame offers us the tools needed to create windows as well as make the shapes and rectangles needed to draw the timetable format.

Challenges we ran into

Participating in a hackathon for the first time presents a myriad of challenges, ranging from tight time constraints to learning new libraries. One of the most pressing constraints is the limited time available to develop a functional prototype within the 3-day timeframe. During this period, we were in the midst of a very busy schedule, as there were multiple tests in close proximity. As such, we were under a huge time constraint, juggling both finishing the project as well as revision for our tests. For this project, none of us had experience in making UI. Using our limited knowledge gained during these 3 days, we rushed out a functional interface and application that was able to capture the idea we had in mind. Moreover, grappling with a new library like Pygame adds an additional layer of complexity. We had to quickly familiarize ourselves with its features and syntax to implement much of the features needed for the application. Additionally, we also did not have much experience working with classes, it presented a huge learning curve. This was due to the large number of classes we were working with both for the events of the scheduler and Pygame’s as well. Despite these challenges, we were happy to finish enough of the project to yield a working demo as a proof of concept.

Accomplishments that we're proud of

The completion of our Python project was surprising, as we were unsure if we were able to finish it within the window. A large portion of time was spent on making the sorting algorithm for the events. We were able to differentiate between repeating events with fixed timings and those that were arranged based on deadlines. This provides users with a streamlined approach to manage their schedules effectively. Additionally, our project also includes a feature to store data from the timetable in a file, enabling the data to be stored so that it will not be lost when the app was closed. We had also implemented a feature that allows users to see the description of the event when they hover over the event box in the timetable. We feel that this enhances the user experience and provides valuable context at a glance. Despite facing tight time constraints, we were glad to successfully execute our proof of concept, being able to implement our idea into a functioning product.

What we learned

Through our Python project, we gained valuable experience in several key areas of software development. Firstly, we delved into the world of Pygame, a popular library for creating multimedia applications, particularly games. Learning Pygame enabled us to understand how to handle graphics, input devices, and events in a Python environment, laying the foundation for building interactive user interfaces. Speaking of interfaces, we also honed our skills in UI design by creating intuitive and visually appealing layouts for our application. Additionally, our project introduced us to Ortools, a powerful Python library for implementing constraint optimization algorithms. This allowed us to tackle complex scheduling and time management challenges efficiently, leveraging advanced optimization techniques to enhance the functionality of our application. Furthermore, our project emphasized the importance of object-oriented programming principles, enabling us to structure our code in a modular and maintainable manner. By combining these skills in graphics programming, UI design, optimization, and object-oriented programming, we were able to develop a robust and user-friendly Python application that addresses real-world scheduling needs.

What's next for Timetable ScheduleSorter

In the next phase of our Python project, we aim to implement several key enhancements to further improve the functionality and usability of our scheduler application. Firstly, we plan to introduce a delete and edit function, allowing users to easily modify or remove events that have been added to the schedule. This feature will provide greater flexibility and control over the scheduling process, enabling users to adjust their plans as needed. Additionally, we are committed to enhancing the user interface of our application to create a more polished and intuitive user experience. This will involve refining the layout, styling, and interactive elements to ensure that the interface is both visually appealing and easy to navigate. Furthermore, we intend to introduce a dark and light mode option, giving users the ability to choose their preferred color scheme based on their preferences and environment. By implementing these improvements, we aim to make our scheduler application even more versatile, user-friendly, and visually engaging, catering to the diverse needs and preferences of our users.

Built With

Share this project:

Updates