Good schedule to follow for becoming better at competitive programming for beginners
The three most important things in competitive programming:
Learn and know your programming language. (~3 months - all the time)
Learn algorithms/data structures and implement. (~9 months - all the time)
Practice coding every day. Do contests. (all the time)
(Doesn’t just apply to competitive programming) Have fun! (all the time)
Thus, that’ll be how you break up your schedule. The time it takes for each person will differ, depending on if you already know algorithms, if you know programming or not, etc.
The following is a more detailed how:
#1 Learn and know your programming language.
Pick a programming language and stick with it. Learn the basic syntax and start solving beginner problems. People always ask “how do you learn a programming language?” Search Google and find out; there are so many resources online. (If you really can’t find a resource, message me.)
Try out USACO training pages. Or if you don't you can use the CodeChef beginner track: beginner | CodeChef or the CodeForces sorted Problem Set: Problemset - Codeforces. These resources will help you with pure implementation problems.
Once you get the basic syntax down and start solving problems, make sure to check your language’s online references, like Reference - C++ Reference. Look at other people’s solutions in your language to learn syntactical tricks.
#2 Learn algorithms/data structures and implement.
But how? where? Here's a little list of algorithms that are used in competitive coding: Data Structures and Algorithms. Another link to find lists of algorithms: What are the algorithms required to solve all problems (using C++) in any competitive coding contest?
Obviously, this does not cover everything. Using CLRS algorithm book as a reference is a good idea.
You will see that reading about algorithms is kind of like supply and demand. The more problems you do, the more algorithms you've got to study up on.
Algorithms with corresponding practice problems: Programming Camp Syllabus
But that seems to easy! Reading and learning about algorithms and data structures will only take you so far in competitive programming. You need to know how to code and adapt these elements to the specific problem you are solving. This requires you to be exposed to a great amount of problems.
#3 Practice, practice, practice. This should be simultaneously done with #2. Never just do #2 or #3; this will not help you. You need to implement AND learn how the algorithm works, so that you are able to tweak it however you want. You should always be practicing.
There are so many online coding platforms: What are the various online programming contests?
Here are the ones I would say to focus on:
Codeforces: ability to look at other people's solutions, weekly contests, no shortage of problems, most problems have editorials
HackerRank: similar to CodeForces, able to look at other people's solutions, most problems have editorials
HackerEarth: has many tutorials for algorithms and DS. Plenty of problems honed for a specific category. Check out their new “Practice” section.
Others: TopCoder, SPOJ*, CodeChef*, online judges*
*solutions and editorials are rare in these cases, you will have to google search or ask questions
The key to success is how you manage your failures, impasses, and wrong answers. You should strike a balance between the amount of time you spend on a problem and the difficulty of a problem. Maybe the problem is too difficult for you, and you shouldn’t be trying to solve it for more than a day’s worth of time.
Don't stop even if you get stuck. Get help immediately. Yes, immediately. Do one or multiple of the following:
Try find other people's solutions or read the editorial. Get the main idea of the solution. Now CLOSE the solution and implement your without reading the solution again. This is quite important, so that the algorithm/solution will sink into your head.
All coding problems have patterns. You will always see similar problems all the time. Thus, strategies and algorithms you used will also pass over. Remember keywords that strike an algorithm. This will play a big role in your success as a competitive coder.
Forums. Post, post, post. People will get annoyed, frustrated with you. Don’t worry about it. I believe in humanity and you should too. You won’t receive help if you don’t try, so just post your question. You won’t learn by hiding under a rock and trying to solve the question yourself.
Do contests. There is no better practice than actual contests. Contests help with your ability to contain your stress and will test your strengths to the maximum.
Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, not worrying about your rating :)
After each contest, make sure to solve all the questions that you did not solve during the contest. This is called upsolving. This is one of the best ways to study; start with the easiest, find out why you couldn't solve it, read other people's solutions, solve it yourself. This is a major key.
#4 Have fun. You really can't be good at something if you don't like it. So have fun! Good luck! I really do believe that hard work beats talent :)
Time is merely a number. Your hard work is what pays off. Don’t let someone else tell you how much time you need to do something. Just do it, struggle with it, and works hard for it. And always, ask for help!
Answered by-Joshua pan
Learn and know your programming language. (~3 months - all the time)
Learn algorithms/data structures and implement. (~9 months - all the time)
Practice coding every day. Do contests. (all the time)
(Doesn’t just apply to competitive programming) Have fun! (all the time)
Thus, that’ll be how you break up your schedule. The time it takes for each person will differ, depending on if you already know algorithms, if you know programming or not, etc.
The following is a more detailed how:
#1 Learn and know your programming language.
Pick a programming language and stick with it. Learn the basic syntax and start solving beginner problems. People always ask “how do you learn a programming language?” Search Google and find out; there are so many resources online. (If you really can’t find a resource, message me.)
Try out USACO training pages. Or if you don't you can use the CodeChef beginner track: beginner | CodeChef or the CodeForces sorted Problem Set: Problemset - Codeforces. These resources will help you with pure implementation problems.
Once you get the basic syntax down and start solving problems, make sure to check your language’s online references, like Reference - C++ Reference. Look at other people’s solutions in your language to learn syntactical tricks.
#2 Learn algorithms/data structures and implement.
But how? where? Here's a little list of algorithms that are used in competitive coding: Data Structures and Algorithms. Another link to find lists of algorithms: What are the algorithms required to solve all problems (using C++) in any competitive coding contest?
Obviously, this does not cover everything. Using CLRS algorithm book as a reference is a good idea.
You will see that reading about algorithms is kind of like supply and demand. The more problems you do, the more algorithms you've got to study up on.
Algorithms with corresponding practice problems: Programming Camp Syllabus
But that seems to easy! Reading and learning about algorithms and data structures will only take you so far in competitive programming. You need to know how to code and adapt these elements to the specific problem you are solving. This requires you to be exposed to a great amount of problems.
#3 Practice, practice, practice. This should be simultaneously done with #2. Never just do #2 or #3; this will not help you. You need to implement AND learn how the algorithm works, so that you are able to tweak it however you want. You should always be practicing.
There are so many online coding platforms: What are the various online programming contests?
Here are the ones I would say to focus on:
Codeforces: ability to look at other people's solutions, weekly contests, no shortage of problems, most problems have editorials
HackerRank: similar to CodeForces, able to look at other people's solutions, most problems have editorials
HackerEarth: has many tutorials for algorithms and DS. Plenty of problems honed for a specific category. Check out their new “Practice” section.
Others: TopCoder, SPOJ*, CodeChef*, online judges*
*solutions and editorials are rare in these cases, you will have to google search or ask questions
The key to success is how you manage your failures, impasses, and wrong answers. You should strike a balance between the amount of time you spend on a problem and the difficulty of a problem. Maybe the problem is too difficult for you, and you shouldn’t be trying to solve it for more than a day’s worth of time.
Don't stop even if you get stuck. Get help immediately. Yes, immediately. Do one or multiple of the following:
Try find other people's solutions or read the editorial. Get the main idea of the solution. Now CLOSE the solution and implement your without reading the solution again. This is quite important, so that the algorithm/solution will sink into your head.
All coding problems have patterns. You will always see similar problems all the time. Thus, strategies and algorithms you used will also pass over. Remember keywords that strike an algorithm. This will play a big role in your success as a competitive coder.
Forums. Post, post, post. People will get annoyed, frustrated with you. Don’t worry about it. I believe in humanity and you should too. You won’t receive help if you don’t try, so just post your question. You won’t learn by hiding under a rock and trying to solve the question yourself.
Do contests. There is no better practice than actual contests. Contests help with your ability to contain your stress and will test your strengths to the maximum.
Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, not worrying about your rating :)
After each contest, make sure to solve all the questions that you did not solve during the contest. This is called upsolving. This is one of the best ways to study; start with the easiest, find out why you couldn't solve it, read other people's solutions, solve it yourself. This is a major key.
#4 Have fun. You really can't be good at something if you don't like it. So have fun! Good luck! I really do believe that hard work beats talent :)
Time is merely a number. Your hard work is what pays off. Don’t let someone else tell you how much time you need to do something. Just do it, struggle with it, and works hard for it. And always, ask for help!
Answered by-Joshua pan
A Computer Science portal for geeks. It contains well written, well thought and well
ReplyDeleteexplained computer science and programming articles, quizzes and practice/competitive
programming/company interview Questions.
website: geeksforgeeks.org
I must thank you for your time to read this wonderful article!! Foreign visitors should apply for Turkey evisa online.
ReplyDeleteExcellent post.. Thank you Apply online for Azerbaijan online visa to travel Azerbaijan. Get visa online with 24/7 customer support.
ReplyDeleteKeep up the work, great job! The Kenya government has introduced an online visa system that allows US citizens to obtain a visit visa electronically. kenya visa for us citizens, US citizens can now easily apply for kenya visa from their home or office.
ReplyDeleteGreat articles. I have never read these types of beautiful articles. I will share some knowledge about the Requirements for Ukraine Tourist Visa for people who are planning to visit Ukraine or other countries.
ReplyDeleteIncredible website your website layout & themes so good it's amazing, and your blog post for many useful for me. Keep up the.. great work. Air suvidha self declaration form, you can apply for air suvidha self declaration form online via evisa Indian website.
ReplyDelete