Inspiration

Students of the twenty-first century spend hours of their day in front of their computers for both entertainment and education, and more so now due to the pandemic. As students, we know how easy it is to lose track of time while we’re on our devices. Therefore, Study Bull is an application that takes over the screen after a certain amount of time (set by the user) and quizzes the user on information they need to study for.

What it does

When the user runs Study Bull, they can adjust the settings to fit their needs. These settings include the time between each Study Bull appearance and the URL to the Quizlet set the user wants to be tested on. Afterwards, Study Bull will run in the background, but as soon as the set amount of time passed, Study Bull will appear and make the user match the right term to the definition provided. Study Bull will let the user know if they’re right before closing itself.

How I built it

This application was built completely with Python. The project was initially divided into the three mini-projects: scraping the terms and definition off of Quizlet, building the GUI, and interacting with the scraped information. Scraping heavily involved the use of three packages: Selenium, Beautiful Soup, and Pandas. These packages allow Python to connect to the browser, parse HTML documents, and handle data, respectively.

The GUI, which includes the settings page and the pop up box that quizzes the students were made with the Python plug-in, PyQt. Qt Designer made it possible to design the interfaces. Buttons and other features can be created by creating objects in the Python code, which allows the users to actually interact with the interface.

Getting the program to interact with the vocabulary set scraped from Quizlet required the Pandas package to convert the information into a data frame, organize the information, and access the information. A random definition will be chosen and along with the correct answer, the program will also pull three incorrect answers. All of this will later be passed into the GUI for the user to see.

Challenges I ran into

One of our initial challenges include running into reCAPTCHA when trying to scrape terms and vocabulary from Quizlet. This was because we were using bots to request the information. To overcome this we did some research and implemented the Selenium package to simulate a real user using the browser and bypassed reCAPTCHA. Another challenge we ran into was making the GUI due to lack of experience with front-end programming. We spent a lot of time figuring out how to create different objects such as input boxes using Qt Designer with Python, as well as struggling with having the interface we designed interact with the scraper. But after many tutorials we were able to overcome this.

Accomplishments that I'm proud of

We were proud of the GUI we created because we were really able to get a good understanding of PyQt and customized the interface by adding things such as a logo we created. Our web scraping program was another accomplishment because we were able to bypass reCAPTCHA while still automating the process of obtaining the Quizlet data.

What I learned

As we’ve mentioned, as back-end programmers this project gave us a good opportunity to learn about making user interfaces through hands-on experience. As freshmen, this is probably one of the biggest projects we’ve worked on. We learned a lot about how to break a big project up into sub-projects in order to delegate roles, and how to communicate well when piecing each of the sub-projects together. Git was also a crucial part of our collaboration process and we were able to learn how to use it with the workshop from Friday.

What's next for Study Bully

In the future we want Study Bully to have the option of both quizzing the user from a Quizlet vocabulary set, or build their own on the application. Other ideas include having the program generate arithmetic problems to test younger users on.

Share this project:

Updates