A. This answer was given in one of the quora posts. It was by an ECE student who got better at programming. He suggests the following steps to start and sources to follow:
For the competitive programming part, go for the following skip-and-solve approach:
1. Create your account on .
2. Go to and start solving problems sorted by most AC submissions.
3. If you are able to solve 5 problems in a row easily, skip 25 problems and then attempt the next problem. Repeat until you are challenged.
4. If you are stuck in a problem, read the editorial. Try coding it then. After you get AC, always see the solutions of best coders- International GMs and GMs. (GM- Grandmaster). I learned almost 80% of the STL referring to codes.
5. Ask questions. From a silly one to a complex one, don’t be afraid to ask one.
6. Be regular in participating in contests. Also, try challenging yourself psychologically. One way to do that is doing a contest a day before your exams, even when you haven’t studied ANYTHING. It would really help you tackle pressure situations.
7. Get frustrated by TLEs and WAs. “Higher the frustration, better the code.”
For more seasoned programmers who ask me for some resources, now seems like a good time to share some I have collected since past few months.
1. Topcoder tutorials-
2. Very good for starters-
4. List of some reknowned algorithms-
5. Begin with DP-
6. BigO CheatSheet-
7. Good Fenwick tree tutorial-
8. A Very good blog entry on DS-
9. Kind of a Bible-
10. Another Course to refer-
The technical skills required for top companies are : Coding, Algo & DS, Networking problems, machine learning and latest IT trends.
1. Technical skills
Competitive coding is the best platform to get yourself tested and acquire new skills.
Following are some Competitive coding websites
- TopCoder They have an applet,where you view the question,attempt them online (C/C++/Java/Python),debug it and submit it. They also have a few test cases with answer on which you can test your program before submitting.HUGE number of questions,lots of competitions and awesome coders to found.
- Google CodeJam Go to the Practice and Learn section and try out older problems.I believe this is language independent because they give a question,and data in a file.make the program in such a way that it uses that data,solves the question and writes to a new file that has to be uploaded.(Not the code).So you might want to try that as well.
- The python challenge Another good contest. But python only.
- Codeforces ( ) is the best coding site I have seen. They have a very nice interface, weekly contests, and are good about posting solutions to problems after they have been solved.
- SGU ( ) has a not-so-nice interface, but they are selective in which problems they add, so doing those problems gives good practice on a wide variety of difficulties and types of problems.
- Timus ( ) has a ton of problems and good search feature: you can sort by difficulty(!) and filter by problem category.
- Hackerrank( ) is one of the best that I have seen. It has a pretty good interface with very good problems. It doesn’t have many problems though.
- Codility( ). I came across this through an interview. I would say it has questions ranging from easy to medium and a good place to start.
- is a good site for drill style coding questions and instant feedback in the browser. You can practice by writing either in python or in Java, at this time
- I would add : They have solo and multiplayer modes and the puzzles are really addictive
- Project Euler ( ) is one good collection of problems, although weighing heavily towards number theory.
- A really gruelling annual competition is the IEEEXtreme –
- . It is still new (currently contains only about 100s problems). It has a regular weekly contest. The problems in contest is quite easy, I think it is a good place to start if you are a beginner in competitive programming. You can practice in the archive, and sort the problems by difficulty.
1.2 Algorithms, Data Structures
These sites are useful if one has little preperation time (a few days to one or two weeks).
Sites that have online judges, and are useful for longer term growth (think 2 months or more):
- – by Interviewstreet
1.3 Coding Problems on Computer Networking
1.4 Machine Learning
Gain sufficient knowledge in Machine Learning and AI, because it’s the next BIG thing in the IT universe.
1.5 Latest IT trends.
Online courses and certifications in Hadoop, BIG Data and others can give you an edge over others in the crowd.
These are some good platforms for the same
This completes your technical base.
P.S. if you’re interested in reading some more from me :
(src – Quora )