And the Winner Is...

Dr. Dobb's Journal May 2002

Okay, I'll grant you that programming contests don't have the, well, sex appeal of a celebrity boxing match between Tonya Harding and Paula Jones. Nor, for that matter, do they have the excitement of Stone Cold Steve Austin and Diamond Dallas Page slam-bamming in the ring, or Jeff Gordon and Rusty Wallace bumping and grinding around the track. Still, considering that countless coding contests are going on at any one time, you have to wonder — what's the big deal?

Programming competitions come in every color and flavor, and are held for all sorts of reasons, the least of which is that they can be both instructive and fun. Even DDJ has sponsored its share of competitions — the "Data Compression Contest" (February 1991) and "Handwriting Recognition Contest" (January 1993) come to mind. On top of that, DDJ has published articles by contest winners like Eric McRae who discussed his winning project for a Motorola 68HC16 design contest (see "Avoiding Microcontroller Processing Pile-ups," October 1993) and Friedger Müffke's Moving Letter Box in "The Curl Programming Environment" (September 2001). Then there's the University of Lethbridge's GoFigure contest (mentioned last month in this space), which challenged high-school students to decipher an encrypted message in order to win a scholarship.

One reason for putting on a contest is publicity. That's likely what's behind NEC Electronics' recently announced "Esprit de K0RE" 8-bit microcontroller design contest (http://www.necel.com/K0REcontest). Just for entering, you get the K0RE System Design Kit (assembler, C compiler, flash programmer, and target board), and for winning an NEC-Mitsubishi 50-inch Plasma Sync flat-panel display. Likewise, Borland has again cranked up its community contests (http://codecentral.borland.com/codecentral/ccweb.exe/contests). Although the first one is likely over by the time you read this, you can still learn from reviewing the entries.

The Google search-engine folks have a different reason for sponsoring a programming contest — they have a problem that needs solving. They want to know what interesting things you can do with 900,000 of Google's web pages (http://www.google.com/programming-contest/). The grand prize of $10,000 sounds okay, too.

Another reason to hold a contest is to make money. That's what Topcoder (http://www.topcoder.com/), a business that designs and hosts ongoing coding competitions as a commercial endeavor, is all about. Depending on the contest, you can take home thousands of dollars. For its part, Topcoder makes its money from corporate sponsors and companies that use contests as an employment screening tool.

Then there are the more academic-like contests, such as the Loebner Prize (http://www.loebner.net/Prizef/2002_Contest/loebner-prize-rules-2002.html) which presents an annual cash award to the designer of a computer system that best succeeds in passing a variant of the Turing Test. The International Olympiads in Informatics (IOI) has for more than a decade been the premier academic Olympiads for high-school students worldwide. Organized by the United Nations Educational, Scientific, and Cultural Organization (UNESCO), IOI's goal is to promote the art and science of computer programming. And for the first time this year, IOI will be hosted in the United States, on the campus of the University of Wisconsin-Parkside (http://www.uwp.edu/academic/mathematics/usaco/ioi2003web/index.htm). Similar to IOI, the American Computer Science League (http://www.acsl.org/acsl/) has organized computer-science and programming contests for junior and senior high-school students around the world for more than 20 years. Forget about the big bucks, however. Winning schools receive copies of Microsoft-donated software (Visual C++, Visual Basic, and the like), along with trophies, and top-scoring students get programming books.

For students, the big kahuna of coding contests is the ACM Intercollegiate Programming Contest (http://icpc.baylor.edu/icpc/). Every year since 1970, more than 17,000 students representing 1300-plus universities from 67 countries have competed for scholarships, prizes, and bragging rights.

One of my favorite contests is the legendary International Obfuscated C Code Contest (http://www.ioccc.org/), where the challenge is to write the most obscure/obfuscated C program, while illustrating the importance of programming style. Interestingly, the 1986 grand winner of the Obfuscated C contest was Larry Wall of Perl fame. Of course, Perl now has its own Obfuscated Perl Code Contest (http://www.sysadminmag.com/tpj/obfuscated/) where the tongue-in-cheek objective is "to determine who can write the most devious, inhuman, disgusting, amusing, amazing, and bizarre Perl code." Now and again, proponents of other languages — Visual Basic, Java, PHP, and the like — hold obfuscated code contests of their own.

This isn't to say that every contest is worth the salt that seasons it. Some are outright scams. More often than not, however, the good in coding competitions outweighs the bad. Programming contests generate interest and enthusiasm. They provide instruction and recognition. They stimulate creativity and reward intellectual achievement. And then, of course, there are the prizes. Some of them have really cool prizes.


Jonathan Erickson
editor-in-chief
jerickson@ddj.com