I have basic understanding of data structure and algorithms (stack,queue, linked list, binary tree, graph,greedy,dp,little bit hashing,data structure for disjoint sets and little maths) with this knowledge I started solving problems on codechef and got frustrated I got to know that I need to learn lot of things everyday I am striking with some new horrible term like (today "DYNAMIC CONVEX HULL") on codechef and all the problems needs too much of prerequisite and now I have got completely lost. I have too many things to learn(like combinatorics, computational geometry and number theory,....bla bla) but I am not getting from where should I start and where should I end. Little knowledge of things has proven to dangerous on codechef. For example previously I have herd of only three types of tees(bst, avl,redblack) but there are too many trees like fenwick,segmented, treaps..... are we supposed to learn all of them. Any one please pull me out of this darkness, please tell me how do I start, I have already mentioned brief summary of my knowledge. And that CLRS book how to read that book, that book is a ocean. And please tell me what is the approach to learn any algorithm. First learn all of them and the start with codechef all learn one and practice its problem. I have tried the second approach, first learn one algorithm and then solve its problems. But what happened is there are too much perquisites on codechef they club too many concepts together to form a single problem. Are the top coder tutorials enough. How the have become such a great programmer @likecs @uwi @xellos @gennedy Any help would be appreciated. Thanks in Advance.
This question is marked "community wiki".
asked 24 Jan '16, 17:12

Hello Arpit, First of all, to become a good programmer you need to spend a lot of time. If you feel that programming is not that fun or you don't have much time to spare then this is not for you. A lot of concepts/tricks may be required to solve a problem and you will learn/understand it if you have spend time here. As far as starting is concerned, start with most basic questions e.g. easy in codechef, DIV2 A/B in codeforces, easymoderate in hackerearth and so on. Learn the concepts/algorithms that you encounter. Also, don't get frightened with all the trees. Yes, you need to learn all of them (not redblack though) and you can learn all, just proceed one step at a time. Forget all the algorithm and data structure you may have heard. Just start solving problems, see its editorial, see others solutions. If you can't solve any problem, ask in codechef/codeforces/topcoder forum. You will cover all basic algorithms and data structure in 12 months and gather insight as to where to proceed next. Don't get disheartened, every good programmer was a beginner once. answered 25 Jan '16, 00:09
