GSoC’19 Journey — Oppia

Anubhav Sinha
4 min readAug 26, 2019

--

About the project:

Questions are the best parameter to judge a person that he knows about that topic. Whenever a person makes an online course, he adds various tests at every step in the course to ensure that the learner has learned the previous topics. But sometimes it happens that the learner is not able to attempt that question correctly in 2–3 attempts which must not be expected by the creator of the course, as he has added the questions according to the course he has created. But the actual insights can only be provided by the learner who is solving the questions related to the course. So in this case if a learner is able to provide a response to the creator about his approach as to what is leading to the submission(i.e how the learner landed on this answer) it would be really helpful to the creator to get those responses filled by the learner, so that he can edit the course accordingly which will help in increasing the learner experience and in future he will be able to make more better courses. And through this response, the learner will also be able to analyze what is the reason for their submission.

The best part of this project is that the creator will get to know how the learners are applying their approach, same as what happens in actual class when students discuss their approach for attempting a question from their teachers such that it helps the creator to make the course/exploration more user-friendly.

So I think this project will help the creators of the Oppia to enhance their explorations, enriching the learner’s experience, which will overall improve the Oppia’s feedback. The learner will also be able to analyze more about their happenings of the wrong submission.

Milestone 1:

My first task was to add a Boolean variable i.e ‘solicit_answer_details’ to the state schema such that it can be set by the creator whenever he wants. Initially this variable will be set to false.

Adding solicit_answer_details in the State class by anubhavsinha98 · Pull Request #6810 ·…

Explanation Adding solicit_answer_details boolean variable in the State class and doing the necessary changes including…github.com

Next, I added a model: LearnerAnswerDetailsModel which stores the answer details received from the learner. I added a feature to record the size of the model data, such that the data does not exceed the capacity. In this PR all the backend services and domains were also created which were responsible to interact with the model and store the data.

Adding a LearnerAnswerDetailsModel by anubhavsinha98 · Pull Request #6815 · oppia/oppia

Explanation Adding LearnerAnswerDetailsModel in storage/statistics/gae_models.py to store the responses received from…github.com

After that, I made changes in the editor tab to add a checkbox which enables/disables the solicit answer details flag of the state. Also tests were added to check this feature.

Frontend changes such that creator can enable/disable solicit answer details feature for a state by…

Explanation Doing the frontend changes, such that the creator will be able to enable/disable the solicit answer details…github.com

Milestone 2:

In this milestone, my task was to enable the learner to fill the answer details and make controllers to do that.

Firstly I added controllers in the backend to interact with the requests received from the frontend. A generalized ACL decorator was also created which can be now used in future also.

Adding controllers, object factory and backend api service for learner answer details by…

Explanation Adding controllers for learner answer details, for deleting, getting and posting learner answer details…github.com

Then I made changes in the frontend services to such that learner can fill the answer details whenever he is asked for it. A new directive was made to implement this.

Enabling Learner for fill out answer details by anubhavsinha98 · Pull Request #7159 · oppia/oppia

This PR includes the frontend changes, to enable the learner to fill out answer details when he is asked for it…github.com

Milestone 3:

My last milestone was based on the Creator’s side i.e to make the UI such that creator can view the responses received from the learner. I also added end to end tests to test the whole functionality.

Creator View in Improvements Tab: AnswerDetailsImprovementCard by anubhavsinha98 · Pull Request…

Explanation Checklist The PR title starts with “Fix #bugnum: “, followed by a short, clear summary of the changes. (If…github.com

Conclusion:

I am thankful to my mentor Akshay Anand who helped when I had any doubt, encouraged me to do my best and coordinating with me throughout GSoC. Also, I am thankful to Sean Lip, Sandeep Dubey and other members of Oppia too for helping and motivating me. I am grateful that my proposal was accepted and got such a great chance to participate in this prestigious program.

--

--