Inspiration

We wanted to make time management to be automated, allowing Penn State students to spend time doing their assignments instead of trying to figure out what assignment to even begin with.

What it does

The goal of our project is to develop a reminder application that can suggest what assignments one should complete in what order and when.

The user will be prompted to login enter their Canvas credentials, which connects the Canvas API to our program, and the program will seek for assignments to be completed.
The program will gather the following assignment such as due date and type of assignment. More specifications can easily be added in the future.

Our program will directly get the assignment details from calling the Canvas API.
'''curl -H "Authorization: Bearer $token" "https://canvas.instructure.com/api/v1/courses/$COURSE_ID/assignments" | jq . > assignments.json ''' In order to find out the type of assignment, it will seek for key words such as essay or quizzes.

To determine what assignment to do first, each assignment will be given a priority score based on the details of the assignment.
For example, assignment A is due in one day and is a quiz. Being an assignment due in one day will give it a priority score of 10 but since it is a quiz, it will only add an additional 3 points in the priority score.
On the other hand, Assignment B is due in two weeks but is an essay. Since it is due in two weeks, it will have a priority score of 4 but due to being an essay, it has an additional 5 points in the priority score.
If one was to add up the total priority scores of each assignment, Assignment A will have 13 in priority score and Assignment B will have 9. The assignment with the higher priority score will be displayed to the user to be done first along with what course it belongs to.

In order to make the program more convenient, it will be embedded into Microsoft teams. That way, users will not need to open a new tab and potentially get distracted when they should be seeing what assignments to do. Opening a new tab also takes up memory which could slow down one’s computer as well.

How we built it

We used flask to develop the website, but we didn't have time to implement the sorting logic. The main deliverable that should be examined is the script.py file. There are two objects, courses, which has information including course title and id, and assignments, which holds due dates, assignment type (essays, quizzes, homework), and possible points. There is also an array of assignments and courses that will contain all courses and assignments a student has. Azure text analysis will look for keywords listed in dictionary and due dates of the student's assignments located from the Canvas API and will create a new assignment or course and add it to the array.
From there, a Prioritizer class will scan each assignment and look at the keywords and due dates and give each assignment points. The intention was to deploy the web app to an Azure VM. The program is then embedded into Microsoft Teams to be used as an app there.

Challenges we ran into

Developing a system to prioritize assignments proved to be the toughest part. We thought a scoring system would be a simple and quantifiable way to prioritize tasks but assigning the points was not the easiest thing to implement.

Accomplishments that we're proud of

As a team, we are proud of being able to come up with a solution in a short amount of time. For half of the team, this is the first hackathon attending and excited for developing their first solution.

What we learned

Our team learned about VMs and using them to help deploy our program. We also learned about dockers and containers from one of the workshops provided.

What's next for underscore

We used parts of knowledge provided in the workshops to develop this project but we plan on using everything else from workshops to continue learning more about coding outside of this project.

Built With

Share this project:

Updates