Inspiration

As I've tutored several students in various mathematics subjects, I've often realized how tedious it can be to compile teaching materials. Additionally, as a student, when studying for tests, it can be stressful to keep finding new problems when the study guide may not be enough to grasp many concepts. My goal with this, then, was to create something that could automatically create a variety of math problems and provide tutoring for difficult problems.

What it does

The user starts by choosing how many problems they want to solve and the type of problems. Next, the program randomly generates questions for the user to solve. The program checks the user's answers and uses Gemini AI to talk with the user about how to solve the question and where they probably made a mistake.

How we built it

I started by building many templates for problems for each field of study. Then, using randomized variables, I could use the templates to generate many more problems. Once I got a good basis of templates, I started working on incorporating Gemini AI to read and compare the user's answer to the actual answer for the question and return an appropriate response. The final thing I worked on was creating a UI to bring it together. For this, I created a simple GUI for the problems to take in the user's answers and give the Gemini feedback.

Challenges we ran into

Incorporating the Gemini API into my project was a pretty substantial challenge. Having never programmed with an API and with almost no experience in Python, it took me a long time to figure out how to get and receive responses between the program in Java and Gemini in Python. This was also my first time using a GUI. I didn't know what I was doing with it or how to make it look nice. In general, I also struggled with my limited knowledge of Java and the different tools available to me, which I had to find.

Accomplishments that we're proud of

I'm proud of the final product despite how rough and unfinished it is. I was able to successfully set up Gemini API in my program to get AI responses. I'm also proud of the fact that I made a working GUI that does nearly everything I want it to. My initial plan was to create a website using HTML and JavaScript, but I decided to challenge myself about halfway through by building a GUI for my application.

What we learned

I came into the hackathon with 2 goals: to learn how to build a real project much bigger than anything I've built in the past and to learn how to use the Gemini API to get AI responses. I learned much more about those 2 than I anticipated. I struggled with them, but I also crushed my initial expectations of how much I would learn and get done. Additionally, I learned a great deal about the tools available in Python and Java, including how to use Swing to create GUIs.

What's next for PiQuiz

The project I came up with is incomplete, missing several types of problems. My first item is to create more templates to generate problems. Alongside that, I would like to introduce a selectable difficulty for problems. Next, I want to clean up my code by finding better solutions, making it more legible, and adding more error-handling. Afterwards, I want to clean up the UI, making it look nicer as well as introducing new ways to interact with it through multiple-choice questions, interactive diagrams for geometry, a basic calculator, and maybe even a way to plot graphs. The final thing I would like to do with it is expand the topics to all elementary and high school math courses. As I learn more math over the years, I would like to keep adding new courses.

Built With

Share this project:

Updates