Inspiration

Due to COVID-19, most of us are having lectures online; one of the biggest challenges to achieve academic success is the distractions from social media, TV shows or family. The learning scheduler can generate individualized schedules and help students keep track of all the upcoming assignments and tests, therefore making learning online better.

What it does

The software our team designed is a learning scheduler, which aims at improving students' digital learning experiences and helping students overcome procrastination and gain better time management skills while studying at home.

To initiate the application, the user needs to enter the deadline of the assignment or test, the time needed to complete the project or study for the exam, as well as the weight for each assessment.

The function of schedule generation is implemented using the greedy algorithm; thus, the task with the higher priority will appear earlier in the timetable. If a task can’t fit into the current time slot, it will be split into multiple pieces, which allows the user to complete it part by part.

The software also allows users to assign time slots for sleeping and other personal events, and when generating schedules, it will automatically skip those occupied time slots.

How we built it

The software is written in Python. One important function is the priority function, which decides which task goes first in the generated schedule.

The software will calculate the priority of the task entered by the user, using the equation of priority = 1 /(task.ddl - start_time - task.duration)

Lastly, we used the PyQt5 framework to make the GUI, which makes the software look more elegant, meanwhile, straightforward and easy to use for the majority of people.

Challenges we ran into

One of the biggest challenges our team encountered was fitting all the assessments before deadlines while the user doesn’t complete several tasks on time. For instance, the estimating time of completion for 1 assignment was 3 hours, but as it turns out, the user used 5 hours to finish the project. This means that the entire schedule needs to be modified, as the user has used 2 extra hours which is originally scheduled for other tasks.

Accomplishments that we are proud of

I am proud of that our team tackle the challenge we encountered (see previous question). We solve that problem in the following way:

To maximize the possibility for the users to meet all the deadlines, we let the software run multiple times and generate a new schedule if the user has difficulties to follow the schedule. If there are remaining parts of the unfinished task, the software will first double the priority of the event, re-design a schedule and see if everything works out. If it still doesn’t work out, we then compress all the tasks by a scale of 0.9 until all the tasks can fit into the timetable.

What we learned

The importance of teamwork and persistence.

We learned from this project the importance of testing. Both the font-end and the backend of the software are very complex, when they are pieced together it is extremely difficult to find where things go wrong if the functionality is not as expected. To avoid such issues, we wrote some test cases for the core algorithms, they can both test the correctness of our code and serve as concrete “documentation” of the functions’ usages.

After this hackathon, we also have a better understanding of some common pitfalls of Python. Unlike C/C++ in which function arguments can be passed as values or as constant references, passing mutable references in Python can easily cause unexpected behaviour, so it is important to write a clear specification of a function before implementing it. We also experienced some pitfalls of using global variables. These lessons will help us build more robust programs more efficiently in the future.

What's next for Learning Scheduler

There are many aspects of the scheduler that can be improved. Since the software is designed for improving digital education and most of the students watch lectures on their laptops, the software only has the desktop version. In the future, we can implement the mobile version, which is more convenient for users when universities re-open. Additionally, it would be nice if the tasks and events can be exported into Google and Outlook Calendar. We can also add concepts of machine learning to the design, so that it can adapt to users’ habits and adjust tasks length intelligently.

Built With

Share this project:

Updates