Thursday, September 24, 2015

What is the programming competition?

What is the programming competition?

The programming competition is just that, a competition during which teams compete by attempting to code correct solutions to as many of the problems that they can within 5 hours. The problems are not just 'undergrad assignment' questions, they are scenarios that will require you to develop a non-trivial algorithm that correctly simplifies the problem into a form that can be solved very quickly (solutions must generally be able to solve a multi-thousand solution in under 3 minutes).



Why should i join programming competition

Aside from ego, pride or otherwise acquired bragging rights, the is also a very good opportunity to develop your skills of problem solving under pressure which every person this side of the wilderness will need to have throughout their life style. Understanding how you came to a given solution and even understanding why that solution was wrong (or inelegant), can help you to develop your problem solving skills. By reading only textbook you will never improved yourself. 

Student/people usually will think that "oh man, that sounds hard". Actually, it is and it isn't. The most common misconception is that you need to be a 'wizard' coder to do well.  In fact, many successful teams bring with them printed notes of how to perform the more tedious coding tasks so that they can spend their time working on finding a good solution rather than wasting it trying to remember the correct algorithm for a depth-first search.


Team Strategy Tips

  1. If you are not sure about your solution, discuss it with your teammates. If stuck, explain problem to a teammate. Use good judgement if it is worth the interruption of him/her.
  2. If you are stuck on a problem, take a walk or go to the toilet. The best ideas come to mind here.
  3. Look at the scoreboard every now and then. If there is a problem that many other teams solved, it should be easy.
  4. Usually there are 10 question. Split every question with your teammate, read and choose the easiest one.
  5. Discus with your teammate who is the coder, who is thinker and who is the algorithmer.
  6. Don't spend to much time on one question. Try to solve other while your teammate think another solution.
  7. When you are done with a problem, separate it. Don't mess your table.
  8. Eat to release tension..that is i always do. 


Hint

I am too not a expert in this, but I would recommend the following things according to my experiences :

  1. Choose a programming language you are going to use in all the competitions. I would say the best choice is Java because java have a lot of library that i can use and easy to remember rather than hard coder.
  2. Learn algorithm such as Sorting, Searching, Combination, Permutation, Graph, Palindrome, Bruce force, Dynamic Programming, etc..
  3. Mathematics algorithm also important such as Algebra, Summation, Cubic, Angle and etc But it is not necessary for me. 
  4. For people using Java as their programming language, i use library such as StringBuilder, BigInteger, HashMap, Scanner, BufferedReader, Math, Arrays, HashMap, Vector, String, Character. Its really help me.
  5. Get some theoretical knowledge of algorithms. Book written by Steven Halim shows you how to solve problem in vary such way.  It contains pretty much all the algorithms, math and data structures you need to know for programming competitions.
  6. Go to website called Hackerearth, Hackerrank, Codechef or else, they provide platform where you can practice to solve the problem provided. 


No comments:

Post a Comment