Dogwood: A Project for Creating Enhanced, Interactive Assignments with Canvas
Tags: octograd2020
Published: 2020-05-22 07:28:29

## Introduction

Dogwood is a project I built in my final semester of school as part of a Computer Science Project Course. With a partner by my side, we create a web app that serves as a proof of concept for enhanced, interactive assignments that strives to work for its students and instructors better than traditional assignment pages and discussion boards. The project is still in its first stages as of the semester's end, but we were able to demo several pages for our instructor supervisor that shows a good portion of our ideas, with lots of room to improve upon in the future. 

Many students and teachers have probably faced this exact scenario: An assignment's description is confusing, so students flock to the course's discussion boards to ask questions about it. However, a regular discussion board's structure is linear, and when they get long, questions that have already been asked about the confusing sections and replies are easily missed, and more questions get asked about the same thing, causing confusion and extra work for instructor's to answer them. The problem: questions aren't clearly associated with specific parts of an assignment, and they aren't displayed in a logical order or way that allow for easy retrieval of information.

Dogwood aims to solve this problem that exist in traditional forum-style discussion boards by integrating a Q&A interface directly inside an assignment, giving students the ability to ask question about a specific part of an assignment, and display them in a way that is intuitive for other students to find the answer that they are looking for. Dogwood is designed to be a Canvas LMS (https://www.instructure.com/canvas/) plug-in that can be embedded into a Canvas course in place of the built-in "Assignments" page, or it can be used as a standalone site after Canvas assignment information has been retrieved.

## Demo Link

coming soon...

## Link to Code

{% github reecemartin/dogwood %}

## How I built it 

The project is developed with the MERN (MongoDB, Express, React, NodeJS) stack. 

For the first stage of the project, we wrote a proposal that outlined what our intentions for the project were in terms of idea, project structure & technology stack, backend infrastructure, as well as some mock-ups on how we wanted the project to look. 

We then moved on to two prototyping stages, during which we built some of the core pages to the dogwood user experience, especially the interactive assignment page (which we built two versions of) that contains all the interactive discussion elements we wanted to put in the project, which is really the core of the project. 

Although the project is still in its infancy stages, the future goal would be to have it be built out enough such that we are able to connect it to Canvas' OAuth API and deploy the application onto our school's Canvas instance, and maybe even in the Canvas Marketplace.

## Additional Thoughts

Dogwood is really what my whole university experience built up towards. As the final project I made in my university years, I utilized many skills I learned in courses such as web development, design of interactive media, and engineering large software systems, in order to realize an idea that I've had in mind for quite a long time. Although it probably isn't the most comprehensive project I was a part of throughout these 4 years (most groups I've been in have been quite large), it definitely is one that I am most proud of, and I am glad to have had the opportunity to bring it to life. 

I'm really grateful for my [partner in crime](https://github.com/reecemartin) whom I met in my first CS class in university and finished this last one with me, as well as our faculty supervisor [Paul Gries](http://www.cs.toronto.edu/~pgries/) who we've held in appreciation over these years and who patiently guided us through the process. Couldn't have done this without you guys!