-
-
Ready to test your Olympiad skills?
-
MathForces is here to help
-
Choose your between a "Contest" and "Endless" mode
-
Solve problems in a distraction-free environment
-
Ask for hints on any problem
-
Give your opinion of problems!!
-
Track your problems over problem areas in time
-
Compare your score with the best of the best
Inspiration
Math olympiads are one of the best opportunities for high school students to prove themselves as STEM talent. Olympiads require years of preparation with meticolous planning and oversight from mentors. Math olympiad coaches are rare, expensive, and don’t even exist in some countries. We attempt to provide a well-designed framework for math Olympiad preparation without direct human oversight.
What it does
MathForces consists of 2 important components:
- An interactive training screen with two training modes
- A personal progress tracker
The most impactful feature is the "Endless" training mode. When the user enters the training session, MathForces shows a problem tailored to the student's current skill level. We do this by leveraging user feedback to estimate each problem's objective difficulty. As the student solves the problem, a timer keeps track of how much time they've spent on it suggesting when it's time to move on. If the student is stuck, they can take advantage of up to 3 dynamically generated hints. When the problem is finally solved, the user is prompted to give their opinion of the problem's difficulty with a 10-star rating system, giving their own stamp on the platform and helping shape the user experience for fellow math enthusiasts.
The "Mock competition" training mode allows a student to practice in a time constrained, contest-like environment. MathForces chooses 3 problems of increasing difficulty and assembles an IMO-style test, designed to challenge the student just the right amount. This allows students to more systematically test their preparedness for an upcoming competition.
MathForces remembers the students' successes and opportunities for improvement and pools them into a personal "Progress" page. The "Progress" page tracks the average difficulty of the successfully solved problems, allowing its user to clearly track their progress over time - providing an objective metric for their skill level. The page also shows the average difficulty of problems solved in each of the 4 problem solving categories that show up in competitions - Geometry, Combinatorics, Number Theory and Algebra - giving feedback on a student's strengths and areas for improvement.
How we built it
Following sessions of feature brainstorming and feature design, we used Google AI Studio to make our vision come to life. Taking inspiration from the minimalistic and distraction-free style of websites like MonkeyType, we generated an intital version of our web-app's main components (the About, Play, Leaderboard and Progress pages). With the help of Google AI Studio we iterated on the design and functionality of each page until we converged on the current design.
Behind the distraction-free and playful user interface is the heart of our website - the problem repository. We scraped the Art of Problem Solving website for a list of the most important problems in Olympiad mathematics and generated 3 hints for each problem using the Gemini API.
Challenges we ran into
Before starting the project neither of us was comfortable with React. We both had some web development knowledge, which allowed us use Google AI Studio in an informed way. Despite this, debugging sometimes felt opaque, especially in moments when AI Studio kept trying the same solution which failed to fix the problem.
Two problems stand out:
- Getting MathJax to dynamically format the LaTeX in our problem statements
- We ran into a bug where it rendered every LaTeX block in a new line, breaking up the clean flow of the problem statements on the Play page
- AI Studio kept building complexity, patching and destroying old functionality without fixing the problem.
- We finally resolved this when we removed all of its suggestions from our code and asked ChatGPT for a minimal version of a React web-app which renders LaTeX.
- We implemented this solution instead of the complexity Gemini suggested.
- Deplying a React web-app with Google Cloud
- There were some differences in deploying a React app versus a simple web page that we were not aware of prior to following the MHL tutorial for deployment.
- The commplexity of Google Cloud services, web protocols, server setup made it difficult to realize where we could have made a mistake - was it on our website or in Google Cloud or somewhere in our local setup?
- However, using resources from Google and some guidance from ChatGPT, we were able to test the website locally, determining that the problem lies in our Cloud services setup.
- We resolved this by downloading the cloud services command-line tool which gave us easier access and better control of our storage bucket.
Accomplishments that we're proud of
The endless play mode stands out as the perfect interface for focused mathematics practice. Being former mathematics competitors ourselves, we were happy to realize that this is a product we would have used ourselves.
The problem repository and incrementally more helpful hints also shine as a helpful tool in skill-building that simply did not exist for us. Unless you have a really caring mentor, you are unlikely to get guidance like this as a student who's practicing mathematics.
What's next for MathForces
Among the numerous ideas for making this a truly great platform are:
- Integrating a more intelligent recommendation system
- Allowing custom problem playlists for play mode
- Allowing more custmization for the play sessions
- A functional leaderboard and ELO system
- Integration with AOPS and problem sources
- Onboarding prominent community members as maintainers
Built With
- gemini-api
- google-ai-studio
- python
- python-beautiful-soup
- react
- typescript

Log in or sign up for Devpost to join the conversation.