“When I had a conversation with a learning support teacher in my highschool around a month after we transitioned to virtual learning, I learned that there was a growing disparity in the extent to which different students were able to keep up with the coursework in the number of different classes she was teaching. The continuous influx of assignments without any supervision resulted in poor engagement from students, especially for those in grades 7-10,”

Brian Yoon

We identified a problem from this very specific anecdote that existed within virtual learning–the lack of accountability. When teachers are not able to track students’ engagement with learning material such as video lectures or third-party educational content on youtube, students are less motivated to actively engage with the content. Furthermore, teachers are also not able to identify which students are not being able to utilize the video resources to learn effectively.

We identified a need for an app in the market that does the following tasks well in a virtual setting:

  • Enable teachers to track students’ learning progress from video lectures
  • Keep students engaged with their learning material through accountability

Fokus is an app that aims to reduce the disconnection between teachers and students in a virtual learning environment by delivering on the tasks identified above. After surveying a total of 34 teachers to gain feedback on the initial prototype of Fokus, we got an overwhelmingly positive response with 88.2% of teachers responding that they would use Fokus if it had a desktop version as well, and 79.4% answering that they could see their colleagues using an app like Fokus. Another need that was revealed from our market research was that the app needed to simplify and make the process of setting questions for videos more efficient, as presently the teachers were being overwhelmed by the sheer number of apps and services that they need to use in virtual learning.

What it does

The Fokus app takes a YouTube video URL as input, then suggests questions based on Natural Language Processing that teachers may assign to students after students have finished watching a video lecture. This simplifies the process for teachers by reducing the time they have to spend designing several questions for multiple videos assigned to a number of different classes. The teachers would also be able to track students’ progress based on the answers from these questions. Teachers can also more easily reach out to those students who appear to be struggling to understand the material using the video lectures.

How we built it


The app would accept YouTube video URLs as input, which would then be fed into a parsing algorithm in python. The parsing algorithm then would return the video ID of the particular URL, which would then be used in conjunction with the YoutubeTranscriptApi to obtain the transcripts of YouTube videos. Then, a TF-IDF filter would be run on the transcript in order to procure vocabulary words with the highest Term Frequency-Inverse Data Frequency from the transcripts, excluding stopwords from the search. Then, all sentences containing those words would be procured, and the word would be eliminated from the sentences to create fill-in-the-blank style questions. We also used wordnet to replace these words with distractor words in order to generate true/false questions. The questions would then be ranked by the average TF-IDF vectors per word for each question multiplied by the TF-IDF vector for the word that was omitted, to generate relevant questions that would be displayed first to the teachers. The teachers can refresh the questions if they do not like the ones that have been suggested, or they can manually type in their own questions as well.

Android Studio and Backendless

To create the database for our android app, we used a MBaaS platform called Backendless (similar to Firebase). In the database, we had a table of users, students, teachers, assignments, and questions. The user table contained a list of Backendless generated registered users with columns like the user's name, password, email and the user's teacher/student emails. Meanwhile, the students and teacher table contained a list of student and teacher objects we had the app create once the user specified whether they were a teacher or a student.

To create new assignments on the teacher end, we had the teacher enter a number of assignment data in our app including the YouTube URL of the video. In order to generate a list of questions from the YouTube URL input by the teacher, we created a temporary database of 'questions' where a YouTube URL, a list of questions pertaining to the YouTube video and the answers to the questions were stored to a single row. This was mainly because we wanted to show that we only needed to integrated the NLP side of our project to the Android side of our project to make our app generate the appropriate list of questions for a YouTube URL input.

After the teacher created a new homework assignment for their students, we had the app create several assignments for each of the teacher's students, so that we could retrieve the assignments on the student side of the application through a searchQuery which used the students email as the key. We planned on allowing students to submit the assignment and see their score, then send the results to the teacher, but due to time constraints we couldn't implement that feature.

Challenges we ran into

We attempted to create multiple choice questions with the help of an NLP library. For the multiple choice questions, we would have used a wordnet corpus that would generate distractor words that sounded similar but had different meanings to those omitted. However, we ran into some several errors when executing the code, particularly when importing specific libraries that were incompatible with each other.

One of the biggest challenge we faced in the android side was the inability to retrieve data objects related to the user. In the Backendless API, we saw that there was code written for retrieving objects owned by a registered user but when we ran the code in the API, we faced issues, and we weren't able to find the problem. As a result, we could not relate a teacher user to a number of student users nor could we let a student user own a list of multiple assignments. In the database itself, object relations were created but the code we got from the API wasn't able to retrieve the user related objects. Eventually, in order to resolve the problem, we ended up using the searchQuery to retrieve data related to the user. There were also a few last minute bugs few hours we had before submission so we ended up deleting or commenting some code so that we could film a video of the app functioning.

Accomplishments that we're proud of

We have been able to collaborate with people of different backgrounds on a very technical project involving Natural Language Processing, which was very new to us! We're very proud that we have been able to create a complete algorithm for NLP from scratch with zero prior experience (our team had only first-time hackers!).

What we learned

We learned how to use natural language processing to determine which words are the most important in a particular text stream. We learned how to make use of Android Studio, Backendless and UI/UX tools such as Adobe XD as well as Sketch. We also learned key communication and leadership skills that will serve us well in our future careers.

What's next for Fokus

There is an immense prospect for integrating machine learning with the question ranking algorithm. Currently, the questions generated are not very humanly intuitive, so in order to rank the questions better and offer better suggestions for teachers, it would really help to have an algorithm that learns based on which questions teachers choose from the available options. In the long run, this would allow the app to suggest better questions for teachers.

Although there are still a large number of issues that needs to be resolved on the android side, the most imminent ones would be connecting students and teachers through the database and creating the assignment results page where teachers can see how their students performed on the assignment. Though we initially planned to have a button where teachers can add students and students can add teachers, we weren't able to include it and as a result, we had to link teachers and students manually in the database for our demo video.

Video links


Built With

Share this project: