Hi, I’m Jaskaran Singh. The goal behind me writing this is to help as many students to navigate their journey from starting out programming to a hard-core competitive programmer!
Is it your first time, starting out CP(competitive programming)? And even after trying your level best do you think that there is still something that you are missing out on? Do not worry. It took me about 6 months to go from a noob programmer to someone decent enough to be a Candidate Master on cf and 8 more months to become a Master. I still have a long way to go, but the first step to being a good programmer is working in the real world and getting experience.
I started doing cp in January 2021. I started giving out contests on cf and also started learning new topics. I enjoyed solving the problems. CP is like a sport to me. I do it only when I want to. I don’t take any pressure regarding CP. I spent about 4 hrs daily on CP to get this good. Do you know what motivates me to do CP? It’s competition. I am quite competitive so I really like to get ahead of others. It motivates me to learn more and become a better programmer.
Tbh, at first, I was reluctant to learn, but when I saw some people in my batch were ahead of me, I wanted to get ahead of them and so I started learning.
If I talk about contests, I always focused on my rank in a contest rather than the rating. I tried to improve my rank gradually. You can also see that I have given a lot of contests on cf. This amount of practice and experience really helped me a lot in getting better.
Being a beginner it is important that you have a proper plan before moving ahead to cp. I have broken down my plan that I diligently followed, and will hopefully help you to make your own plan if you are just starting.
To head into the plan, the prerequisite is knowing the basics and syntax of one programming language. The common languages are java, python, and c++ that most students follow. You can stick to the one you are more comfortable with of these three, but I’ll suggest you start with c++ as it is a faster language. Now if you don’t know the basics and syntax of any above languages, do not panic there.
Here are the RESOURCES that I used and strongly recommend everyone to use to start the journey -
To start with, this is one of the videos that clears your basics. Watch it fully, it is sufficient for you to start cp. Now after that, I’d suggest you do sufficient practice before learning anything new. At least for one month. Give every contest on cf. Your target should be to be able to solve 1-2 problems of cf contests. When you are consistent enough and confident enough that you can solve the first 2 questions or even 1 question if the 2nd question is of a higher rating than 1200. You can start learning new stuff. You shouldn’t think about your rating. Just below 1200 is good enough. Now, I’ll tell you exactly the source of my rating. You must not have heard about USACO guide. It is the site, which guides you to achieve perfection in cp. I’d say this guide is self-sufficient. You don’t even need to follow any other thing tbh. I just followed USACO and gave contests on cf. You should start USACO from the bronze section, every section has topics with increasing levels. You should learn all the topics given there in any order you want. You just need to explore it once. Every topic has several links of sources to learn theories and there are several problems there to practice that topic. They are enough to make you confident enough in a topic. But keep in mind that problems in USACO are sometimes really hard, so you don't need to solve all the problems in the beginning stage. But don’t ever rush into learning. Your equation should be, practice more than you learn.
In the next few blogs, I'll be covering what should be your mindset while doing CP and how should you upsolve and how should you take your performance in a contest.