A classroom assignment management app for creating, assigning and completing classwork and homework. Created by Parth Shah and Brian Provost.
Server-side: Ruby on Rails, Puma with Faye Websockets, PostgreSQL with ActiveRecord, bcrypt
Client-side: ReactJS, Isotope.js, jQuery, Zurb Foundation, Google Analytics
APIs: Twilio, Embedly
Testing: RSpec
Deployment: DigitalOcean, Heroku
Students have two views:
All of a teacher's functions are performed from their dashboard. They can:
To measure proficiency, we collect all responses a student has made to questions in a particular chapter. Each response is assigned a weighted value based on whether or not it is correct. Correct responses receive a value of whatever the question difficulty level is, which is a number between +1 and +4. Incorrect responses get a negative or smaller value between -1 for level 1 questions and 0.5 for level 4 questions.
More recent responses are then weighted more strongly using an exponential weighted moving average. This has the effect of making the score climb exponentially, so we take the log of that to make the increase in score look more linear.
If a student has not answered many questions in the topic of the assignment we also scale down the proficiency score of the first few responses.
We consider a score of > 1 to be "proficient." This equates to about 10 consecutive correct responses of increasingly difficult questions, but a teacher can increase the number of questions required to complete the assignment by increasing the number of problems assigned. An assignment is marked complete when a student reaches proficiency or when they reach the number of problems assigned by the teacher.
You can see the code for this in /lib/tyto/database/statistics/proficiency.rb.
We think this algorithm is very good for measuring proficiency in performing a specific task, like basic addition, solving for x, etc. It would not be good for measuring knowledge like memorized state capitals or dates, so for those type of assignments it would be preferable to assign a specific number of problems rather than relying on our algorithm.
Tyto is the genus name for barn owls. Credit for the name goes to Ifu Aniemeka.