Competitive Programming
Some sources for online practice:
Sources for material:
Some posts with general advice are listed in the CodeForces catalog, and the awesome-list there.
There are roughly 3 types of practice for competitive programming [1].
- Topic based: Specific data structures and algorithms, specific strategies e.g. dynamic programming, greedy, and categories such as graphs, strings etc.
- Random: Needed to recognize the topics/strategies/categories when seeing a problem in the wild. This is helpful for reasoning. Also helpful for communication. Here it is important to avoid self-deception. The point here is only give up/get a hint if you do not have the prerequisite background to solve the problem at hand. (Having some note of what you know helps here). Otherwise, the practice strategy of never giving up works almost perfectly.
- Mock interviews: Take notes from previous practice to make it easy to communicate your ideas as you work through the problem.
Always work on problems that are not easy to you, or those with new content. Also make notes on how you are spending your time, e.g. how long into the problem you understood what needs to be done etc. Also have a spreadsheet storing progress.