As students, we spend a considerable amount of time in the classroom. Strong communication within the classroom is important for students to learn effectively. When instructors are teaching new concepts it is easy for students to become confused. Currently, instructors must arbitrarily decide when to open the floor to questions. Since it is difficult for instructors to gauge how well their students understand the material these interactions between teachers and students are often cut short or skipped.

What it does provides real-time student-generated understanding metrics that instructors can use to make more informed decisions about when to pause and when to move forward. can help turn classrooms into a more collective environment by promoting instructor/ student communication and paving the way to more relevant/meaningful class discussions.

How we built it

On the back end, we built our app using python with Flask to help specify the routes and create APIs. We also used PostgreSQL as a database to store users, courses, classes, feedback, etc. On the front end, we used javascript with react and JQuery to design responsive UIs and HTML with CSS to make an engaging layout. In addition, we used tools like GitHub (for version control), TravisCI (for continuous integration), npm (for package management) Heroku (for Webhosting), and New Relic (for APM).

Challenges we ran into

One issue we ran into was scalability. Originally we had students send GET requests to the server to receive updates in the class. However, we soon realized that this method was not scalable (especially, when we started to implement in-class questions). Instead, we decided to use Web Sockets (socket-io) this way when there was an update to the class the sever sent out a message to each of the participants and updated those pages respectively.

Accomplishments that we are proud of

We are really proud of our freshness algorithm. One issue we thought of was if students become less active in class. We decided that those students should be weighted less when calculating the class average understanding level. Therefore, instead of using a straight average we wrote an algorithm that calculates the weighted average based on how recently a student updated their understanding level. We are also proud to have made such a responsive UI. We were able to learn a lot about React during M-Hacks and using those skills we built several components that updated automatically when there was any change.

What we learned

While building we learned a lot about both front end and back end web development. We were able to get familiar with relational databases and API development. On the front end, we learned how to make responsive UIs using react and JQuery. In addition, we learned about many tools that make software development more efficient, such as using GitHub branches to split work between team members, continuous integration to automatically test our code when pushed and pair programming to reduce the number of errors we made.

What's next for Kapiche

In the future, we hope to add more functionality to the teacher accounts. For example, we want to integrate the Canvas API into our application so that teachers can grade students based on responses from the question polls. We also want to incorporate google slides into our application so that teachers have everything they need to present on a single site. In addition to teacher accounts, we are planning to add more statistics to the student accounts. We plan to allow students to view their understanding level throughout

Share this project: