During the COVID-19 pandemic, millions of students across the globe have shifted towards remote learning. Unfortunately, this substitute for regular classes misses out on the regular classroom interaction present with in-person learning. One of the main issues is that students lack the normal question-answer sessions while learning that help them understand concepts and clarify their understanding. By recognizing this issue, we set out to create a platform that would mimic this dynamic educational collaboration present within in-person schooling.
The purpose of the Clip! platform is to set up individual educational communities in which students can ask questions, get answers automatically, as well as reply to other students. For a brief walkthrough, a student or other user can create an account from the website, create their own organization, add other students based on their usernames to the community, and begin asking questions on their dashboard page.
The Clip! Platform was constructed using several different technologies. We chose to build the frontend with React due to its quick customizability and structured state integration. After recognizing the initial issue of student-to-teacher and student-to-student interaction, we decided to create 2 main pages: Organizations and the Dashboard. The Organizations page communicates with the database to create a web of student networks where any student can create an organization and add other students onto that same community. On the Dashboard page, a student can access all communities that they are added to and ask questions, with all of the information immediately being sent to the Clip! computation engine. The data structures of this web application were built using Amazon Web Services. With the initial web application hosted on Amplify, all data is collected with AWS AppSync and DynamoDB. For the computation engine, the Wolfram and Google APIs, as well as Khan Academy web scraping, are used to retrieve results based on the user’s question using a python script on a REST API. With the secure Cognito platform, the Clip! Platform separates the overall data based on the username and segments the organization/dashboard data.
The primary processing engine called using an AWS Lambda function through a search query checks through the Wolfram API for an answer before finally using the Google API to retrieve the top 10 linked results. As shown below, other methods in place also act to summarize the text and retrieve the search page from Khan Academy.
if "summarizeQ" in question:
question = question.replace('summarizeQ ', "")
numSentences = int(question)
question = question[1:]
return getSummary(question, numSentences)
if 'googleQ' in question:
if 'learnQ' in question:
client = wolframalpha.Client(app_id)
res = client.query(question)
results = next(res.results)
answer = results.text
except Exception as e:
Wolfram features were extensively used in this application. First, the Wolfram API was the core processing engine for question-answering on the Clip! dashboard. When the user entered the search button, their query was processed by the Wolfram NLP Cloud API via a direct call through AWS API Gateway to return the final results. Secondly, the performance of the application was monitored using Wolfram data processing to refine the model and application workflow. Overall, this application demonstrates the effectiveness of the Wolfram API to both act as a very efficient processing backend but also to aid the transition to and from virtual learning.
Code Repository: https://github.com/KAJMHackathonTeam/clip