This is my first blog post. I'm still trying to figure out this :p sorry if there are mistakes.

So I'm 18 and I've recently discovered programming(Like 8-9 months ago I think). What I have realized so far is that I have a large prerequisite gap. I wasn't very focused on math in highschool and I was also not competitive at all. In highschool I mostly focused on physics and the minimal amount of math to do highschool physics. I did very well in math too, but that was because the math required to do good in exams doesn't require much deeper understanding. But in order to do cp, deeper understanding of math seems to be crucial. Where I live and study, there is absolutely no one who does cp, so getting help from people around me is not possible. My university is very much research focused and there's so support for cp at all. I will have to be completely self taught.

What would you people suggest me to study in order to be good at cp and mathematics in general? I'm ready to put in the time and effort. So far I've completed CS50 from Harvard on Edx 7-8 months ago. Since then my skills haven't gone any farther.

Auto comment: topic has been updated by anirban.pranto (previous revision, new revision, compare).i think giving contests will help too much. just do the contests (not only codeforces, ABC recommended) and try to solve more problems. when you try to solve a problem but you fail (this is here when you find out what you should learn), go and read the tutorials then you may face a new algorithm; go and read about it on geeks for geeks (I think there is a good explanation) and continue this way... when you face a new thing, go and read about it ... you will become better and better this way ...

Maybe you should try to question why solutions work instead of basing it completely in intuition of "it makes sense!". If you can't prove things you're free to ask for others in comments, if you point out that you can't figure out how to prove certain things you're more likely than not getting a reply. IMO, the most important things in the start of CP are things that you won't learn from a course or classes but by trying things out for yourself, failing and maybe asking someone along the way. Learn how to learn and learn the basics (prefix sum, basic dp, "try all possible combinations" bruteforce type of problems and so on), that and smart coding is enough to get to div1.

Also cmon, you don't even have 1 complete page of submissions in your account and you're feeling stuck, you haven't even started trying yet!