Course:CPSC312-2021/Task-Manager

From UBC Wiki

Brendan Woodward, David Liu, Jack Heidal

What is the problem?

Everyone has trouble managing their tasks and assignments, and we think it would be great if you could have a program plan out your time for you. We wish to use prolog and its amazing rules based implementations and pattern matching to achieve this.

What is the something extra?

Although Prolog has a CSV package that makes writing and reading easy, the format that it provides (and requires to write) is not the best when working with dates and times. For this reason we have created a vast amount of predicates to allow us to read from the csv and assert all the information in a way that is useful for scheduling tasks. Furthermore, we wanted the output to be easily read by the user and savable so they could keep it on their computer and monitor their progress. This required us to write to a csv and create arbitrary sized rows, based upon the dates given in the plan, and read different facts from the knowledge base to label each cell. The user is therefore able to easily write its tasks, schedules and events into a CSV, and add rules, then have the schedule made and outputted into a very easy to read CSV file. We believe the strong suit of this project and thing that really makes it extra is the type conversions and working with date and time in such a way to make entry and reading the output both easy to read, but also keep for reference after the program has completed.

What did we learn from doing this?

Prolog required all of us to shift the way we think about programming, and at first we were struggling with writing a logic program. However, we were able to quickly adapt and get in the mindset of creating facts that require conditions to create our functions. We got to learn a lot about type conversion, as well as working with date and time. This exposed to how powerful Prolog really is when it comes to pattern matching. Furthermore, using CSV files got us very familiar with reading and writing to CSVs. In addition, we got to explore how I/O is handled in Prolog, and figuring out ways to handle user inputs and not error out upon invalid inputs. We also got the opportunity to take the newly learned negation concepts to make predicates and have more diverse applications with each. Overall, we got to apply many different in-class concepts, as well as develop new knowledge in Prolog applications and sharpen our ability to write logic programs. We also learned how to make relations that work for different arguments in variables.

Links to code etc.

https://github.com/MrEvildoom/312Scheduler

 Guidelines Create Your Wiki Page Past Projects Help and Resources 
Course title
Image:wiki.png
Course title
Instructor:
Email:
Office:
Office Hours:
Class Schedule:
Important Course Pages

Add a content here. You can also copy and paste content for each tabs from below: