As members of a STEM sorority, we are passionate about promoting academic achievement and making it possible for others to do their best. We wanted to develop something that would help our fellow students, and we chose to build an Alexa Skill because none of us had ever used Amazon Web Services or the Alexa API, and we wanted to learn! Canvas is a learning platform used by more than 300 learning institutions and is in the hands of more than a million students, so we started with a calendar from this platform. However, unlike Canvas-specific skills, our skill is lightweight and open source, so it can be applied to any learning management system with a calendar.
What it does
Study Buddy gives students a concise run-down of their upcoming assignments and tests. It parses data pulled from the Canvas calendar to sort assignments by date and type. Students can ask Study Buddy to list assignments or tests (or both) due today, tomorrow, or this week.
How we built it
Study Buddy is an Amazon Alexa Skill. Its front end was developed in the Amazon Alexa Skill Builder. Its back end was written in Python 3.6 and is hosted in AWS Lambda. The skill parses a .ics file downloaded from Canvas to extract assignments and due dates. Because we are using .ics, which is a standard file format, it will be easy to integrate Study Buddy with other learning management systems, e.g. Moodle and D2L.
Challenges we ran into
Coming into this Hackathon, none of us had ever used Amazon Web Services or the Alexa Skills Kit. We had also had very little experience with web apps, and none with JSON requests. Therefore, we had to learn how to use AWS Lambda, the Alexa Skills Kit, and JSON. A few hours after learning that Alexa Skills communicate via JSON requests, one of our team members wrote a parser to process the JSON requests and extract the relevant parameters. One thing that took a while for us to figure out was how exactly a lambda function works… but once we understood that an incoming request calls the handler function and passes the JSON request as a parameter to that function, we were able to get the request from Alexa into the back end we wrote and use that data to power our skill.
Accomplishments that we're proud of
- Learning what JSON is and how to use it
- Learning how to use Alexa Skill Kit and AWS Lambda
- Having a working prototype before 2 AM
What we learned
- First full stack development
- First time going through the entire software development life cycle
What's next for Study Buddy
- Currently, Study Buddy uses a sample .ics from one of our team members’ Canvas, which is hosted in the same directory as the AWS Lambda function. Our first big goal for Study Buddy is to add Canvas account linking, so that Study Buddy can download the latest version of any Canvas user’s calendar when it is invoked.
- As we work on account linking, we also hope to add more flexibility and variety to the requests Study Buddy can handle. Our first few additions will be:
- Option to ask what is due in a specific class, using enrollment data pulled from the user’s Canvas account
- More flexibility in time frames, e.g. “next 5 days”, “before Friday”, “next 2 weeks”
- Importing grade weighting data from the user’s Canvas account, then using grade weights and due dates to provide students with recommendations about what they should be working on next
- Note: while some of the features we hope to develop will be Canvas-specific, the basic skill is and will remain usable for any .ics file that contains relevant data.
- After we get account linking set up, our next goal is to extend Study Buddy to work with other learning management systems. Eventually, we hope to develop a public API so that users can use Study Buddy with any source of a .ics containing assignments, and can customize our skill to provide them with information that is most helpful to them.
- Study Buddy could be integrated into Alexa’s morning routine to give students a quick and helpful overview of what they need to be working on that day.
- Study Buddy is currently and will always remain totally free, open-source, and extensible, because we want our work to benefit as many people as much as possible.
- We would love to see Study Buddy adopted by as many universities as possible, because we would like to see our work benefit as many students as possible. ## Acknowledgements
- Monique Shotande, for help with the Alexa Skills Kit and AWS
- Jeff Maxwell, for helping us understand AWS Lambda and for valuable tips about demoing our project
- Johanna Masterson, for being better than a rubber duck