Founder & CTO @SMERGERS & @wealthrox
Past - Dev Infra @Google · RF @NI · CS @USC

Founder & CTO @SMERGERS & @wealthrox
Dev Infra Intern @Google NYC RF @NI-WCDMA
Computer Science @USC
hey [at]

Many keep asking me this question, "How do i improve my programming skills?". I used to ask the same question to my friends who were good at it ( Not that i'm too good at programming now 😛 ) But i have definitely found certain places where one can enhance their programming skills.

Before one gets started with these, it is important to have good knowledge of Data structures and Algorithms. So best would be to code all the lab programs we had in 3rd and 4th semester once again 😉. All the sorting techniques are very important!! "Introduction to Algorithms" by Cormen, Leiserson, Rivest and Stein is considered to be one of the greatest books of all time. I'm pretty sure it will be helpful.

There are many sites which have a huge compilation of problems.. I Knew just one till now.. But after looking at the Shaastra website.. I got a lot of other links which are equally good.. My all time favourite is TopCoder. It has a java applet which is simply awesome 😊 They call it the contest arena.. It has a chat room(lobby). It also includes a coding area where we can code the solution.. We can compile the same and test it for the examples given to us.. Probably this is the reason i like it the most. There are 2 divisions.

Div II - for beginners.. having a score less than 1200
Div I - for users having score more than 1200

both divisions have 3 problems, generally 250 , 500 and 1000 pointers. Difficulty directly proportional to the points 😀 The quality of problems is good and I enjoy solving them. Previously google had its Google code jam on Topcoder but this year onwards they will be hosting it on their own engine..
Now i'm listing some of them here :

1. ProjectEuler
2. TopCoder
3. UVa Online Judge
4. Sphere Online Judge

Hope these links were helpful. Please feel free to leave comments.

Update: I recently spoke at BMSCE on FOSS, Programming etc. More about the same can be found here