Improving technical and programming skills

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 Codeforces.
2. Go to Problemset – Codeforces 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- Data Science Tutorials
2. Very good for starters- Page on iarcs.org.in
3. CS 97SI: Introduction to Competitive Programming Contests
4. List of some reknowned algorithms- Data Structures and Algorithms
5. Begin with DP- Introduction to Dynamic Programming
6. BigO CheatSheet- Big-O Algorithm Complexity Cheat Sheet
7. Good Fenwick tree tutorial- Fenwick trees demystified
8. A Very good blog entry on DS- Algorithm Gym :: Data structures – Codeforces
9. Kind of a Bible- Basic Algorithms & Data-Structures
10. Another Course to refer- T-414-ÁFLV: A Competitive Programming Course

B.
The technical skills required for top companies are : Coding, Algo & DS, Networking problems, machine learning and latest IT trends.
1. Technical skills


1.1 Coding
Competitive coding is the best platform to get yourself tested and acquire new skills.
Following are some Competitive coding websites

  1. TopCoder 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.
  2. Google CodeJam Google Code Jam 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.
  3. The python challenge The Python Challenge Another good contest. But python only.
  4. Codeforces (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.
  5. SGU (Saratov State University :: Online Contester) 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.
  6. Timus (Timus Online Judge) has a ton of problems and good search feature: you can sort by difficulty(!) and filter by problem category.
  7. Hackerrank(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.
  8. Codility(https://codility.com/programmers…). I came across this through an interview. I would say it has questions ranging from easy to medium and a good place to start.
  9. CodingBat 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
  10. I would add CodinGame : They have solo and multiplayer modes and the puzzles are really addictive
  11. Project Euler (www.projecteuler.net) is one good collection of problems, although weighing heavily towards number theory.
  12. A really gruelling annual competition is the IEEEXtreme –IEEE IEEEXtreme 24-Hour Programming Competition
  13. Jollybee Online Judge . 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):

1.3 Coding Problems on Computer Networking
Network Coding, Open Problems

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
1. https://www.coursera.org
2. http://www.lynda.com
3. http://www.tutorialspoint.com/

This completes your technical base.

P.S. if you’re interested in reading some more from me : Dhruv Aggarwal’s answer to What are some of the best ways to learn programming?

(src – Quora )

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s