Education has always been essential for advancement in life, and it has become even more important in recent years. However, scaling education to those who need it is a very difficult problem. Tools such as Piazza allow professors and teaching assistant to more effectively scale courses to ever-growing student bodies. As undergraduate teaching assistants, we noticed that piazza could be used much more effectively and decided to do something about it.
What it does
In order to prevent TA fatigue and encourage the learning process, we designed and implemented a machine-learning backed search engine and duplicate question detector for piazza. We applied the natural language tool kit and scipy to analyze questions and extract content vectors. In our web interface, a user can enter a question and see similar questions from the course’s piazza. The natural language analysis we performed means that these results are much more relevant and helpful than those returned by piazza’s built-in search. This means that students can get answers and learn much more effectively, and TAs can focus on answering new questions.
How we built it
We used scipy and nltk to do the analysis of all questions. The backend is a flask app that communicates with a material design frontend. To train the models, we used a third party api over piazza’s internal REST api and accessed data from courses that we have both taught and been students in.
Challenges we ran into
Piazza has no documented api, but fortunately third party apis exist. Questions that may be poorly worded or difficult for even a human to understand presented other challenges, but we were still able to process them. The greatest challenge however, was actually calculating the similarity scores for questions since none of us had used any of the machine-learning related libraries before yesterday.
Accomplishments that we're proud of
We are proud of the fact that we made a usable and effective tool that presents a direct solution to an important problem. Even if a student has trouble stating their question, or perhaps does not fully understand the scope of their problem, our system can suggest potential answers immediately.
What we learned
It is very difficult to answer programming questions as a human, and we learned that it is even more difficult to teach a computer to do so. We found that even well established systems have room for improvement, and that we are capable of applying our unique blend of technical skills and educator experience to these making these systems better.
What's next for Paizza
We focused primarily on the initial user interface and the language processing system. This leaves us with several potential paths for further development. Our code has support for other information sources such as Wikipedia and StackOverflow, which gives students convenient access to even more information. We also plan on building an auto-moderator bot over our language analysis system that can supplement information on questions that have already been asked. This idea attracted attention from both professors and other teaching assistants, and we plan on continuing development. In just a few days, we were able to make a substantial improvement to the learning process and we do not plan on stopping here.