Why should students only come up with the answers?
Solan, revolutionizing learning through student-built question banks.

Kaveesh Khattar
Jan 20, 2019

Cisco Talent Outreach
Cisco reached out to my school this past summer, among some others as well for it's outreach program. We were asked to identify problems our school currently tackles quite frequently or something the students at our school feel can be improved through technology.
Technology
The technology we adopted for revolved around Python for the main reason that Python was in our curriculum and learning frameworks around Python would make the learning curve less steeper for us students, who didn't have a lot of prior coding experience apart from playing around with HTML, CSS and some JavaScript here and there.
We went ahead with Django as the backend for our application, fetching data from a MySQL database and displaying our web pages with HTML, CSS and JavaScript. We used PythonAnywhere to host our application at the end of the program.

Our Idea and Proposal
After exploring several ideas, we decided to develop a solution that would make it easier for teachers to manage exam preparation quizzes for students. We observed that many students spend significant time before exams discussing topics and potential questions with their peers.
This inspired us to create a student-driven question bank, where students could submit questions to help others prepare more effectively. Additionally, the platform would generate daily quizzes from these questions, reducing teachers' workload and streamlining the preparation process.
1. Setting the stage
We went ahead with building the schema for our database that stored all the questions per subject per chapter and relations with other entities such as quizzes. This was relatively straightfoward, with a couple more entities for managing authentication and specific tables to each role (like student reports for the teacher).
We then mapped this schema to Django models before implementing routes to different parts of the application.
2. Building the Question Bank & Generating Quizzes
We then went on to implement the routes for the Question Bank after populating the MySQL database with seed data, post which, we implemented a rudimentary frontend to make sure things are tying together well. We used modals to allow the user to enter their questions and tweak its settings like difficulty level and gave them points for each question submitted to introduce a gamified element. Once we had the entire flow, from the HTML to the database working, we went ahead with enhancing the UI.
After the question bank was setup, it was just a matter of picking questions per chapter of a subject on demand to generate quizzes for the teacher on the fly to help their students revise. We were able to complete this feature quicker as we had a good foundation with the Question Bank and just had to pick questions based on the difficulty set by the teacher.
3. Authentication for different roles - Student & Teacher
This part was less difficult to implement as Django really helped us out here. Django comes with built in authentication which handled different kinds of users as well, enhancing our application with Role-Based Access (RBAC) for some of the sensitive features of the application.

4. Deploying the application
We deployed our app to PythonAnywhere, as it offered a robust hosting platform for Python applications, which aligned well with our app's tech stack. Although it took a few attempts to successfully deploy, the challenges were more related to configuring the environment on PythonAnywhere than with the app itself.
The Final Result
We piloted the application in our school for the second half of the school year starting with the CS class and around 60+ kids used this app during this phase.
