ICFP Programming Contest
Encyclopedia
The ICFP Programming Contest is an international programming competition held annually around June or July since 1998, with results announced at the International Conference on Functional Programming
International Conference on Functional Programming
The International Conference on Functional Programming is an annual academic conference in the field of computer science sponsored by the ACM SIGPLAN, in association with IFIP Working Group 2.8 ....

.

Teams may be of any size and any programming language(s) may be used. There is also no entry fee. Participants have 72 hours to complete and submit their entry over the Internet. There is often also a 24-hour lightning division.

The winners reserve "bragging rights" to claim that their language is "the programming tool of choice for discriminating hackers". As such, one of the competition's goals is to showcase the capabilities of the contestants' favourite programming languages and tools. Previous first prize winners have used Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

, Objective Caml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, Cilk
Cilk
Cilk is a general-purpose programming language designed for multithreaded parallel computing. The commercial instantiation is Intel Cilk Plus.-Design:...

 and Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

.

Past tasks

Year Organiser Description
1998 Massachusetts Institute of Technology
Massachusetts Institute of Technology
The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in...

Write a program that plays pousse, an odd variant of tic-tac-toe. Contestant programs were entered into a tournament to determine the first- and second-place program.
1999 Harvard University
Harvard University
Harvard University is a private Ivy League university located in Cambridge, Massachusetts, United States, established in 1636 by the Massachusetts legislature. Harvard is the oldest institution of higher learning in the United States and the first corporation chartered in the country...

Size-optimize case statements (the contest task spoke about text-based adventure games, but in fact the task was to size-optimize the description of such a game).
2000 Cornell University
Cornell University
Cornell University is an Ivy League university located in Ithaca, New York, United States. It is a private land-grant university, receiving annual funding from the State of New York for certain educational missions...

Implement a ray tracer using a Postscript-like syntax.
2001 INRIA Rocquencourt Size-optimize an HTML-like markup language by removing unnecessary whitespace and tags, and so on.
2002 OGI School of Science and Engineering
OGI School of Science and Engineering
The OGI School of Science and Engineering, located in Hillsboro, Oregon, United States is one of the four schools of the Oregon Health and Science University . Until June 2001, it functioned independently as a public graduate school, the Oregon Graduate Institute . OGI operates four departments and...

Implement robots playing a Sokoban
Sokoban
is a type of transport puzzle, in which the player pushes boxes or crates around in a warehouse, trying to get them to storage locations. The puzzle is usually implemented as a video game....

-like game one against each other.
2003 Chalmers University Implement robots driving a car as fast as possible through different racing tracks.
2004 University of Pennsylvania
University of Pennsylvania
The University of Pennsylvania is a private, Ivy League university located in Philadelphia, Pennsylvania, United States. Penn is the fourth-oldest institution of higher education in the United States,Penn is the fourth-oldest using the founding dates claimed by each institution...

Design an ant colony that will bring the most food particles back to its anthill, while fending off ants of another species. The contest entry would output a state-machine description of the ant: in principle, entries could have been written by hand. Later the task was adapted into Ant Wars, a strategy
Strategy game
A strategy game or strategic game is a game in which the players' uncoerced, and often autonomous decision-making skills have a high significance in determining the outcome...

 and programming game
Programming game
A programming game is a computer game where the player has no direct influence on the course of the game. Instead, a computer program or script is written in some domain-specific programming language in order to control the actions of the characters...

 where each participant is a species of ant
Ant
Ants are social insects of the family Formicidae and, along with the related wasps and bees, belong to the order Hymenoptera. Ants evolved from wasp-like ancestors in the mid-Cretaceous period between 110 and 130 million years ago and diversified after the rise of flowering plants. More than...

. The participant then, in a language called Antomata, program a finite state machine
Finite state machine
A finite-state machine or finite-state automaton , or simply a state machine, is a mathematical model used to design computer programs and digital logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states...

 to function as the brain of each ant. The ant brain
Brain
The brain is the center of the nervous system in all vertebrate and most invertebrate animals—only a few primitive invertebrates such as sponges, jellyfish, sea squirts and starfishes do not have one. It is located in the head, usually close to primary sensory apparatus such as vision, hearing,...

 then control the ant to find and collect food to bring to the home ant hill
Ant colony
An ant colony is an underground lair where ants live, eat and mate. Colonies consist of a series of underground chambers, connected to each other and the surface of the earth by small tunnels. There are rooms for nurseries, food storage, and mating...

, to fend off attackers or making trails of pheromones.
2005 PLT group Implement "bots" for a "Cops & Robbers" game: contestants have to write the control program that guides a Robber-Bot through a quiet urban neighborhood on a mission to rob every bank without getting caught, and the control program for a Cop-Bot dedicated to stopping it.
2006 Carnegie Mellon University
Carnegie Mellon University
Carnegie Mellon University is a private research university in Pittsburgh, Pennsylvania, United States....

Implement a virtual machine that runs an operating system (called UMIX) provided by the judges, and crack it using new programming languages with unconventional syntax and semantics, such as 2D and a version of BASIC
BASIC
BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....

 using Roman numerals. Many puzzles were tiny versions or parodies of previous contests.
2007 Utrecht University
Utrecht University
Utrecht University is a university in Utrecht, Netherlands. It is one of the oldest universities in the Netherlands and one of the largest in Europe. Established March 26, 1636, it had an enrollment of 29,082 students in 2008, and employed 8,614 faculty and staff, 570 of which are full professors....

Implement a 2-stage virtual machine that executes a DNA-like string to produce an image. Then, given an input string for this machine, find a prefix that when added to this string yields an image as close as possible to the given target image.
2008 Portland State University
Portland State University
Portland State University is a public state urban university located in downtown Portland, Oregon, United States. Founded in 1946, it has the largest overall enrollment of any university in the state of Oregon, including undergraduate and graduate students. It is also the only public university in...

 and the University of Chicago
University of Chicago
The University of Chicago is a private research university in Chicago, Illinois, USA. It was founded by the American Baptist Education Society with a donation from oil magnate and philanthropist John D. Rockefeller and incorporated in 1890...

Provide a Mars rover control system that will guide it to a home base while avoiding obstacles and enemies.
2009 University of Kansas
University of Kansas
The University of Kansas is a public research university and the largest university in the state of Kansas. KU campuses are located in Lawrence, Wichita, Overland Park, and Kansas City, Kansas with the main campus being located in Lawrence on Mount Oread, the highest point in Lawrence. The...

Control a satellite to move between specified orbits and rendezvous with other satellites.
2010 Leipzig University of Applied Science
Leipzig University of Applied Science
The Leipzig University of Applied Sciences is a Fachhochschule in Leipzig, Germany. With 6,200 students, it is the biggest University of Applied Sciences in Saxony. Most of the classes are held in engineering and computer science....

, Germany
International Car and Fuel Production.
2011 Tohoku University
Tohoku University
, abbreviated to , located in the city of Sendai, Miyagi Prefecture in the Tōhoku Region, Japan, is a Japanese national university. It is the third oldest Imperial University in Japan and is a member of the National Seven Universities...

, Japan
Program a computer with 256 "slots" to outlast its opponent in terms of slots remaining at the end of the match. Submissions include executables that are entered into a two-phase tournament.

Prizes

Prizes have a modest cash value, primarily aimed at helping the winners to attend the conference, where the prizes are awarded and the judges make the following declarations:
First prize: [Language 1] is the programming tool of choice for discriminating hackers.
Second prize: [Language 2] is a fine programming tool for many applications.
Third prize: [Language 3] is also not too shabby.
Winner of the lightning division: [Language L] is very suitable for rapid prototyping.
Judges' prize: [Team X] are an extremely cool bunch of hackers.
Where a winning entry involves several languages, the winners are asked to nominate one or two.
The languages named in the judges' declarations have been:
Year First Prize Second Prize Third Prize Lightning
1998 Cilk
Cilk
Cilk is a general-purpose programming language designed for multithreaded parallel computing. The commercial instantiation is Intel Cilk Plus.-Design:...

OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

1999 OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

2000 OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

2001 Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

Dylan
2002 OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

2003 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

OCaml
Objective Caml
OCaml , originally known as Objective Caml, is the main implementation of the Caml programming language, created by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy and others in 1996...

2004 Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

 and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

2005 Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

Dylan Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

2006 2D D
D (programming language)
The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++...

Assembly
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

2007 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

2008 Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

ML
2009 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

ML
2010 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

, Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

Sage
2011 F# Shell
Unix shell
A Unix shell is a command-line interpreter or shell that provides a traditional user interface for the Unix operating system and for Unix-like systems...

 and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...


Perennial Teams


External links


Ant War game
  • http://www.ant-wars.net/ - Homepage
  • http://sourceforge.net/projects/formicidae/ - The project at sourceforge.net
  • http://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/ The official page for the task at the 2004 ICFP Programming Contest
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK