Inspiration

We wanted to tackle the hardest part of a CS major's life: having to do math after calculus. We noticed a lack of resources that teach problem-solving skills for proof-based math classes like discrete mathematics. We also wanted to create a way for students to compete with each other on problems, encouraging them to continue studying for their exams.

What it does

With Discrete Learning, students can choose which course they want problems from, and we will display randomly generated problems from those courses. When a student answers they receive immediate feedback and step-by-step solutions.

How we built it

We built a full-stack web application with a react front-end with styling from Tailwind CSS and a backend in Flask. We created a Dockerfile so that the site could be hosted on Google Cloud. We created custom problem generators in Javascript for various sections in these classes and combined them with existing problems. We then stored them in a database to use them as training data for a machine-learning model to generate new problems and explanations for existing problems.

Challenges we ran into

This was our first time fully integrating the front and back end together. Figuring out how to organize the Dockerfile and creating an interface between the database and the frontend server took up a lot of our time. Most of our time was spent learning how to use these frameworks to develop our site. We also spent a lot of time curating the problems and deciding which ones were ideal to generate with scripts.

Accomplishments that we're proud of

We can generate problems from linear algebra and have a bank of questions for discrete math. Also, we are very proud of our use of GitHub and we highly recommend looking at the commit history :).

What we learned

This was our first time using Flask, Docker, and Google Cloud. For most of us, this was our first experience with React, Node, and JSON. We gained experience in using random number generators to create new problems and calculate their solutions.

What's next for Discrete Learning

We want to expand our problems to more fields of mathematics, such as calculus, number theory, and probability. We would also like to implement multiplayer features such as leaderboards, community posts, problem discussions, and tournaments. Our plan is to scrape homework sets/solutions from past math classes and use them as training data for problem generation and solutions.

Share this project:

Updates