Competitive Programming

From Wikibooks, the open-content textbooks collection

Jump to: navigation, search

Contents

[edit] What Is This Book About?

This book is about programming competitions and what you need to know in order to be competitive.

[edit] Where Can I Compete?

  • Annual ACM International Collegiate Programming Competition (ICPC) and their associated regional contests
  • Annual TopCoder Open (TCO)
  • Annual TopCoder Collegiate Contest
  • Annual Google Code Jam
  • Annual International Conference of Functional Programming (ICFP) Programming Contest
  • Weekly TopCoder contests
  • Annual Buisness Professionals of America Conferences (National High School vocational program)
  • Various online judges ([1], [2])

[edit] Why Should I Compete?

The primary reason why people compete in programming contests is that they enjoy it. For many programming is actually fun, at least until they get a job doing it and their desire is burnt out of them. Also it is a good way to meet people with similar interests to your own. But for those of you who need additional incentive, it is also a good way to increase others awareness of you. Major programming competitions are always monitored by people looking for new talent for their organizations, sometimes these are the people who actually fund the contest. High school programming contests (such as the ones sponsored by the BPA) often are to help prepare students for college or careers in computer programming. These contests often attract scouts from colleges looking to award scholarships to these individuals. For example, IBM is currently funding the ICPC, a contest that costs them millions annually. Why would they pay so much for a stupid programming contest? They view it as an investment. It lets them filter through the talent and get to those that could potentially make IBM much more money in the long run. Before IBM the contest was funded by Microsoft for the same reasons. Organizations that feel like they can't quite afford the huge price tag associated with ICPC have begun to fund cheaper contests, such as TopCoder, and in the case of Google, running their own contest through TopCoder's technology.

[edit] How Do I Get Started?

The first thing needed to get started is proficiency in a programming language and familiarness with a text editor/development environment. The two languages common to all of the above programming competitions are C++ and Java. These languages will be used throughout this document. There are many books and tutorials available to learn these languages, in addition to an unending amount of freely available code on the internet.

[edit] Which Language Should I Use?

In a competitive programming environment the value of a programming language differs than in a software engineering environment. While good software engineering practices will not hurt you in completing a task, they can often consume valuable time with little benefits. Many software engineering techniques are designed for projects with many programmers and projects that take a large amount of time to complete. In a programming competition these conditions no longer hold. Most times it is a single programmer working on a task and with very little time in which to complete it. Also note, some programming contests test a programmers skills in a specific language.

[edit] See Also