# Competitive Programming

Every year IT companies conduct competitions for Computer Science/Information Technology. Participating in these opens doors to multiple opportunities including cash prizes, internships and job offers. Here are some career benefits of competitive programming. Here is a free E-book by Dr.Steven Halim from NUS Singapore . As he says “Please note that being well-versed in competitive programming is not the end goal, it is just the means. The true end goal is to produce all-rounded computer scientists/programmers who are much more ready to produce better software or to face harder CS research problems in the future”

##### Steps for getting into competitive programming

To begin your journey for Competition programming, below are some tips which would help to get into the competition programming.

• Learn a programming language(like C,C++,JAVA etc) you are going to use in all competitions. C++ is predominant in programming contests and competitions because of its speed, available data structures / algorithms in STL library and because all the competitions support it.
• Participation and practice is the ultimate mantra. Start with easy problems then move on complex problems and topic wise problems. Also check initial submissions of good coders and editorials, this will make you learn a lot.
• Avoid time limit exceeded error, always consider worst cases before you start coding. Do proper order analysis of your solution because sometimes a little optimization is to be done but sometime there is a need of totally new and efficient algorithm.
• Must learn works, proof, code and analysis of basic and well known algorithms. A book “Introduction to Algorithms”, written by Cormen, is considered Bible on this topic. Some of the well known algorithms to be worth of learning are-
• Sieve of Eratosthenes, or another prime number sieve
• Depth-first search
• Dijkstra’s algorithm
• Floyd–Warshall algorithm
• Either Kruskal’s or Prim’s algorithm
• Some implementation of topological sorting, such as by using DFS
• Convex hull (like Monotone Chains algorithm)
• Edmonds–Karp, or another implementation of the Ford–Fulkerson method; or a preflow-push algorithm; or
Dinic’s algorithm.
• To get good at writing fast codes and improving your implementation follow this:
On Topcoder, start with Div2 250 master it then start with Div2 500 master it then move to Div1 250. Meanwhile keep learning algorithms and keep practicing them on SPOJ or Codechef or Codeforces . And do read the tutorials, after a time you will realize that the tricks and methods to solve are repeating themselves.
##### Benefits of competitive programming

Below are the highlights and top benefits of competitive programming when it comes to finding career success.

##### 1. Makes you a desirable candidate to major companies:

International level programming competition, such as ACM ICPC, is a great opportunity to be seen by Apple, Facebook, Google, IBM and many other executives in the IT field. These major companies are constantly taking care of these types of incidents and participants to find talented employees.

##### 2. Teaches you how to work in teams:

This is a very important skill, because in most of the jobs you will need at some point to work in a team. Competitive programming helps you learn how to work effectively together, because you must work with others in your team to accomplish the same task. You learn how to assess the strengths and weaknesses of your team members and effectively divide the responsibilities between each other.

##### 3. Makes you faster and more focused:

Training and taking part in programming contests make you more disciplined, faster and focused coder. In the programming competition, you must solve problems in stressful situations within a deadline or you will lose. So, taking part in competitive programming teaches you how to be more focused on the task and not only complete it quickly, but also accurately. These skills are highly beneficial for any job, not just in coding.

##### 4. Helps you solve complicated problems:

In programming competitions, you must solve difficult tasks, which are not for ordinary programmers. And this makes you learn how to solve complecated and out of box tasks. This helps prepare you for a job because you can adapt and solve various types of problems, in various types of situations.

##### 5. Training and participation helps you prepare for a career in coding:

It is not surprising to receive job offers from companies immediately after participating in a coding competition. Having experience in competitive programming shows employers you can work in a team, solve complicated problems in stressful situations too, manage time and deadlines with accuracy. It also shows you are a disciplined, focused and fast, which are all indispensable skills.

Below is the list of some Competitions in Computer Science field

1. IBM TGMC (IBM – The Great Mind Challenge – TGMC – India)
2. ACM ICPC (ACM International Collegiate Programming Contest)
3. HackerRank (HackerRank)
4. Microsoft Imagine Cup (Microsoft Imagine Cup | Microsoft Imagine Cup)
5. IOI (International Olympiad in Informatics)
6. Accenture Innovation Jockey (Looking for India’s Innovation Jockeys)
7. Top Coder (topcoder)
8. Code Chef (Programming Competition,Programming Contest,Online Computer Programming)
9. Google Summer of Code (GSoC) (Welcome to Melange)
10. HackerEarth (HackerEarth – Programming challenges)