Before I join the discussion I wanna say first three years should be fixed for problem-solving as a computer science student. I think I may answer this question although I started programming when I was in the first-year student. I think you know how much hard work is needed if you want to qualify for world finals or a googler. There are many strong teams/students from different universities. And they all practice very hard for this. Qualifying for world finals/code jam would be a dream come true for each contestant.
So let's make a plan for qualifying to world finals/code jam. In the very first year of study, one should learn the language in the first 2-3 months. You need to choose a language between C++ or python. I will recommend C++ as it is better suited for the programming contest. And make sure that your language skill is good by this time(i.e. you can code whatever you are thinking). After that, you are gonna need to finish the following works by the end of the first year.
Open account in UVa, Codeforces, LightOJ, Topcoder, SPOJ, and USACO.
Solve 200+ ad-hock problems in UVa.
Learn basic DP and solve some classical problems.
Learn to use stack, queue, priority queue, lists and solve problems with them.
Learn basic graph algorithms like DFS, BFS, Dijkstra, Floyd-Warshall, MST.
Solve some problems that require the greedy solution.
Learn basic number theories and geometry.
Solve 500+ problems overall.
Participate in national contests, codeforces and topcoder contests.
So that pretty much finishes the first year. There are also several topics I didn't mention(like sorting/searching), these are so basic topic and should be covered when solving the ad-hock problem. After this your rating should be blue in codeforces and green in topcoder(make this the achievement).
So for the second year, you are going to learn some advanced algorithms. We can make another list for it.
Advanced data structures, segment tree, and variations(solve at-least 50 problems on it), HLD(solve the QTREE's and you are good to go).
Solve some advanced DP problems. LightOJ has some great problems and they should be solved as much as possible,
Solve some hard problems on the graph.
Learn game theory, combinatorics, probability and pretty much cover every topic that is written on LightOJ problem categories.
Solve another 500+ problems in this year. Complete USACO training system. Do not waste your time-solving ad-hocks anymore. The problems should at-least be div2 C(on codeofrces scale) difficulty. And don't waste too many time-solving problems that are way out of hand. But thinking about hard problems is actually great.
Learn some advanced number theory and geometry topics and solve a lot of problem on these.
Try to attend every contest possible.
Get better at your coding skills.
After this year your rating would be blue in topcoder and purple in core forces. In national contests, you will get around 15-20 place.
For the third year, there is only one practice plan. Solve 1000+ problems. They all should div2 D difficulty. By this time you will learn to solve d1 D. Your rating should be orange in CF and yellow on TC. But the most important thing is solving(solve the problems after the contest excluding the stopper one). Solve past Dhaka regional and different onsite contests in Bangladesh. UVa has got a lot of it. You just need to search for them. Also, take part in USACO monthly contests. You will probably end up finishing top 10 in the national contest. If you are lucky you may even qualify for WF/code jam.
Dedicate the 4th year for more programming. Happy coding.