The Fifth ICFP Programming Contest

$Revision: 1.43 $, $Date: 2002/12/05 23:38:30 $

Organized by: Tim Sheard, Magnus Carlsson, Iavor Diatchki, Thomas Hallgren Nathan Linger Thomas Nordin

Pacific Software Research Center
OGI School of Science & Engineering
Oregon Health & Science University

The contest

Is your favorite programming language the best?

Does it lead to better and faster programs?

Does it make programs easy to write and modify?

Are you and your friends the best programmers in the world?

Then Prove it! We are pleased to announce the 2002 ICFP Programming Contest to be held in conjunction with ICFP 2002. All programmers are invited to enter the contest, either individually or in teams; we especially encourage students to enter.

We've designed the programming contest for direct, head-to-head comparison of language technology and programming skill. We have a range of prizes for the winners: cash awards, invitations to the conference for students, and, of course, unlimited bragging rights.

We hope to repeat the great success of the first four ICFP programming contests of 1998, 1999, 2000, and 2001

Dates and Problem Announcement

The contest will be held Friday, August 30, 2002 -- Monday, September 2, 2002.
The problem will be posted right here on this web site, at 12:00 Noon (PDT) on August 30th and all entries must be received by 12:00 Noon (PDT) on the September 2nd.

Note all times are local times for the west coast of North America (Pacific Daylight Savings time, which is UTC - 7). Entrants from other localities should adjust to their own times.

Team composition

Players may enter alone or as teams of any size. Anyone is eligible to enter (even faculty!), except the Judges. We especially encourage students to enter the contest. (We even have special prizes reserved for possible student winners; see below.)

Contest Overview

On Friday, August 30, 2002 at 12:00 Noon PDT (19:00 UTC) a challenge task will be posted on the Internet on this site. It will also be sent by mail to the contest mailing list.

Teams will have 72 hours to implement a program to perform this task and submit this program to the contest judges. There will also be a special lightning division for those who have only 24 hours to spend on the contest (the deadline has now passed for this division).

Although the precise task chosen will not be revealed until the contest begins, correctness, algorithmic cleverness, and performance will matter. Programming languages that help programmers to build complex systems quickly may allow contestants to attempt particularly sophisticated implementations in the 72 hours allotted for programming.

This programming contest is being conducted by ICFP, which implies a desire to promote functional languages. However, rather than debate the definition of a "functional programming language," we will allow submitted programs to be written in any language whatsoever, as long as it has an implementation for Pentium PCs running Linux. Mixing languages is entirely acceptable; perhaps you will write in O'Caml and Haskell, with a Tcl script to do the gluing.


The ICFP 2002 general chair has generously authorized a range of prizes to reward and recognize the contest winners: money, wisdom, and peer recognition.

Monetary prizes are listed and will be awarded in US dollars. To get an exact conversion from US dollars to Euros, or any other currency, visit the The Universal Currency Converter.

First Prize

The team winning first prize in the competition will be awarded

Second Prize

The team winning second prize in the competition will be awarded

Judges' Prize

Finally, the Judges' Prize is to be awarded, not on the basis of the competition, but solely at the whim and discretion of the judges. Novel algorithms, interesting languages, beautiful code, arresting user interfaces -- these things may well count for something in the judges' eyes.

The team winning the Judges' Prize will be awarded

Travel support

To further help winning students in acquiring wisdom by participating in the ICFP conference, some travel support will be available, in addition to the free registration.


Contest entrants will have exactly 3 days, from Friday, August 30 beginning at 12:00 noon PDT through Monday, September 2 at 12:00 noon PDT. ("Lightning" entrants will have 1 day, until Saturday, August 31 at 12:00 noon PDT.) (Now passed!)

The task description will be linked to this web page and e-mailed to the list.

No submission will be accepted after 12:00 noon PDT Monday. You may, however, submit multiple times; the judges will use the last submission received before the contest deadline. If your last submission is within 24 hours after the task description was posted, it will be considered as a lightning division entry.

What if your team has more than one good idea? Well, for this contest, we will allow only one entry per team.

Your program will have to run on a PC under Red Hat Linux 7.3. (We do not regret we cannot support any other operating system.) More details are available about this machine and its pre-installed software. We strongly suggest that you submit a stand-alone, statically linked executable. If not possible, you will have an option to submit source code along with a "buildme" shell script to compile them and a "runme" shell script to run the code. However, keep in mind that the contest machine is not guaranteed to have your favorite environment and libraries installed. See the list of the software installed on the machine. There is a separate page with the exact procedure to be used to submit your entry.


We have a mailing list that we will use to keep participants informed of news about the contest, and where we will post the task description at the start of the contest. You can subscribe to this mailing list at any time. It is not strictly necessary to subscribe, but it helps the contest organizers plan the event, and by registering the email addresses of your team members, you ensure that we can email the task description directly to your team with zero delay when the contest starts.

Good luck and have fun!

Got a question? Check the FAQ!

To contact us, write to