Inspiration

We are a team of very busy university students. We love to live life, and we understand the importance of studying in order to do well. At times, we get overwhelmed with our workload and we forget to take breaks to clear our minds. We also want to ensure seven hours of sleep in order to maintain adequate mental performance. As a team, we decided that it would be very beneficial to ourselves and others to develop a program that could help us optimize sleep and studying with breaks, in order to help us learn and live efficiently. We needed a program that we could use as a benchmark or guideline, which is the rationale behind our project.

What it does

This algorithm relies heavily on user input. The tester will input the amount of courses they have in a given day. Then, they will be prompted for each individual course, start and end times, as well as credit weighting. Our program will optimize a sleep, break, and studying pattern that will try to make sure that students study at least 30 minutes per credit, as per the university recommended amount. The program utilizes the console of the compiler to generate the schedule of a 24 hour study day. When it is time to study, the word "study" will appear in the time block. This is true for sleeping, breaks, and class times as well.

How we built it

We developed a program in Java using IntelliJ-IDEA, utilizing four classes. Each class was used for a different purpose. For instance, the 'Courses' class contained array-lists which stored the courses and times for each specified class. The 'schedule' class contained a calculation algorithm that set a study minimum based on the credits for that day. A main class was used to put everything together. The team collaborated using GitHub with individual branches. We merged changes whenever we felt like a section was complete.

Challenges we ran into

The greatest challenge we ran into was deciding an algorithm to implement. We understood which tasks we wanted to complete, with a lot of varied ideas on how to actually implement them. However, we worked through this temporary block by brainstorming and slow refinement. Most of the project's time went towards planning and revising. Another challenge our team encountered was deciding which programming language to use. Two members were very proficient with Java, while the other two were experienced with C. In the end, we decided to stick to using Java because of the advanced features it has, such as the ability to create more complex methods, objects, and classes, and more power with array-lists. It was a great team-learning experience.

Accomplishments that we're proud of

Two of our teammates started this Hackathon with minimal Java experience. However, by the end of the project, they were able to learn a substantial amount of content, with a good understanding of classes and methods. Furthermore, being able to complete the project within a reasonable amount of time using GitHub features was something the group was very happy about. The process of making the project was very engaging and collaborative, with constant communication between team members, making for a dynamic and exciting coding session. Overall, we are proudest of what we were able to learn through teamwork in this Hackathon.

What we learned

We learned that a 24 hour time window has a lot of potential to help an individual discover a skill-set. Through the challenges we faced in designing algorithms and debugging, we have gained crucial skills in understanding how to implement more efficient code. For the two team members who had no Java experience, it was an excellent opportunity for them to discover a new programming language and to analyze its similarities with C. Finally, we learned that a team commitment to any hard task is often very fun and engaging.

What's next for Day Planner

We plan to get together and communicate our presentation strategy via an online meeting. Then, we will attend some workshops tomorrow in order to gain some experience from speakers.

Share this project:

Updates