After reading the title if your first thought was like “ML model that is capable of solving competitive programming tasks?”, then this is going to be disappointing – we are not yet there 🙂
In this post I will write (and sort of prove) some ideas which uses ML and can help us build better competitive programming platforms, help us learn better. I will end the post with a bunch of ideas that are worth studying in deep. Let’s talk about some of the issues in CP platforms currently:
- There is no recommendation system – Would it not be amazing if you get recommendations for similar problems based on what you have already solved?
- Tags are mostly broken – Currently problems are tagged manually and there are multiple issues with this. Tags are high level. They tell if a problem has math involved or binary search involved but does not give us any information about what in math or how complex it is. There are a lot of problems with out tags.
- It is very common for beginners to get struck on problems. Currently they search for an editorial or short explanations. Many problems do not have editorials or explanations (spoj, lots of regional contests, other coding camp problems, etc).
- Also, in the case where an editorial exists, the programmer reads it and gets an idea of the whole solution. So that is a jump from 0 to 1. It would be better to give progressive hints on how to solve the problem, this will make them think more about the problem.
I believe 3 and 4 can bring a big change. A lot of programmers give up when they are struck on problems or when they are not able to learn. Likewise, 1 can help them solve more similar problems and understand the concepts better. In this post I will propose possible solutions for them.