Inspiration

The inspiration for the project stemmed from the desire to assist individuals in effectively navigating their coding journey and optimizing their problem-solving skills. It was motivated by recognizing the challenges faced by programmers in organizing their learning process, tracking progress, and determining the best approach for solving coding problems (just like us). The goal is to provide a tool that simplifies the experience, offers guidance, and empowers users to enhance their abilities in a structured and efficient manner.

What it does

Many users face challenges in organizing their problem-solving journey and determining the optimal order in which to solve the remaining problems in a specific category. Our project aims to address this problem by developing a solution that takes in a user's data including the problems he has solved within a certain category and provides them with an overall score and a suggested order in which to tackle the remaining problems. The overall score will be calculated based on the user's performance in solving the problems, considering factors such as completion time, accuracy, and complexity of the solutions.

How we built it

The project utilizes a combination of technologies to achieve its objectives. The tech stack includes:

OpenAI: OpenAI's APIs, such as GPT-3 or GPT-4, are used to design and implement the scoring algorithm. These powerful language models are leveraged to analyze user performance in solving coding problems and calculate an overall score based on factors like completion time, accuracy, and complexity of solutions.

FastAPI: FastAPI is a modern, efficient, and easy-to-use Python web framework for building APIs. It is employed to develop the backend of the project, handling user inputs, integrating with OpenAI APIs, and managing the scoring algorithm and problem prioritization logic.

JavaScript: JavaScript is a versatile programming language used in web development. It is employed in the project to build the frontend components and user interface, allowing users to interact with the system, input their problem lists, and view their overall scores and suggested order of problem-solving.

MongoDB: MongoDB is a popular NoSQL database used for storing and managing structured and unstructured data. It is utilized in the project to persist user data, including solved and unsolved problem lists, overall scores, and other relevant information.

Challenges we ran into

During the development of the project, the team encountered several challenges. One significant challenge was parsing data from the Leetcode API, which proved to be ambiguous and challenging to work with directly. The data provided by the API might not have been well-structured or consistent, making it difficult to extract the required information accurately.

To overcome this challenge, the team decided to resort to web scraping techniques using Selenium. By utilizing Selenium, the team was able to navigate the Leetcode website, extract the necessary data from the HTML source code, and retrieve the relevant problem details, such as problem descriptions, constraints, and sample inputs/outputs.

Accomplishments that we're proud of

Throughout the project, the team achieved several notable accomplishments that we are proud of:

Prompt Engineering: Learning and implementing prompt engineering techniques allowed the team to effectively structure and format the problem statements and user inputs. By carefully designing the prompts, the team ensured that the system accurately understood and processed the user's data, resulting in more reliable and relevant recommendations.

Data Handling: Successfully tackling the challenges of parsing and extracting data from the Leetcode API using web scraping techniques demonstrated the team's adaptability and resourcefulness. By leveraging Selenium, they were able to retrieve the necessary problem details, enabling the system to provide comprehensive and accurate suggestions to users.

Full-Stack Project Completion in a Day: Completing a full-stack project within a day is an impressive achievement. It showcases the team's efficiency, collaboration, and ability to deliver results within a tight timeframe. Building a functional system encompassing both frontend and backend components demonstrates their skills in rapid development and effective project management.

What we learned

Throughout the project, the team gained valuable learning experiences, including:

Prompt Engineering: The team learned the importance of prompt engineering in ensuring accurate and relevant results. They acquired knowledge on how to structure and format prompts effectively, enabling the system to understand and process user inputs more accurately.

Data Handling: Dealing with the challenges of parsing data from the Leetcode API and resorting to web scraping using Selenium taught the team valuable skills in data handling. They learned how to navigate dynamic web pages, extract relevant information from HTML source code, and ensure consistent and reliable data extraction.

Web Scraping: Employing web scraping techniques using Selenium provided the team with hands-on experience in web data extraction. They learned how to automate browser interactions, handle asynchronous loading of content, and adapt to changes in website structure. This knowledge can be applied to future projects involving web data extraction.

Full-Stack Development: Completing a full-stack project within a short timeframe allowed the team to enhance their skills in full-stack development. They gained experience in integrating frontend and backend components, managing APIs, and developing user-friendly interfaces. This experience can be valuable in future projects requiring end-to-end development.

Time Management: Completing the project in a day required effective time management and prioritization of tasks. The team learned how to allocate resources and organize their workflow efficiently to meet project deadlines. This experience can help them optimize their productivity and project management skills in future endeavors.

What's next for LeetMyCode

Next Steps for the Project:

Refinement and Optimization: The project can undergo further refinement and optimization to enhance its performance, user experience, and scalability. This includes fine-tuning the scoring algorithm, improving the problem prioritization logic, and optimizing the overall system's efficiency.

Expansion to Other Learning Platforms: Currently, the project focuses on Leetcode problems. However, there is potential to expand the platform to support problems from other learning platforms such as HackerRank, Codeforces, or Project Euler. This expansion would provide users with a comprehensive problem-solving experience across multiple platforms.

User Accounts and Progress Tracking: Implementing user accounts would allow users to create profiles, track their progress, and save their solved and unsolved problem lists. This feature would enable users to revisit their progress, set goals, and monitor their improvement over time.

Community and Social Features: Introducing community and social features would enhance the project's collaborative aspects. Users could engage in discussions, share tips and solutions, and participate in coding challenges or competitions within the platform. This would foster a sense of community and provide opportunities for knowledge sharing and collaboration.

Mobile Application: Developing a mobile application would enable users to access the platform on their smartphones, making it more convenient and accessible. The mobile app could provide a seamless user experience with offline access to problem statements, notifications, and progress tracking.

Performance Analytics: Implementing performance analytics would allow users to gain insights into their problem-solving patterns, strengths, and areas for improvement. Users could receive personalized recommendations based on their performance data, helping them tailor their learning journey more effectively.

Due to unforeseen cicumstances, we won't be able to attend the Live judgement. Please let us know if you need any more information about our project. Sorry for inconvinience and thank you for providing the opportunity to work on the project.

Built With

Share this project:

Updates