http://www.icfpcontest.org/ Each year, the InternationalConferenceOnFunctionalProgramming sponsors a 3-day programming contest (also with a special 24 hour lightning-speed category). The problems are usually interesting and challenging (see below). The contest is open to anyone who wants to attempt it, and doesn't specify the use of any particular programming language or family of programming languages. The contest is related to the International Conference on FunctionalProgramming, but is in no way restricted to FunctionalProgrammingLanguage''''''s. It looks as if historically most entries are not written in functional languages. In addition to various functional programming languages, the machine comes pre-installed with support for C/C++ (gcc), Smalltalk (SqueakSmalltalk), Java, Ruby, and many more. (Recent contests have only required submission of a dataset, which you generate on your own equipment by any means available.) The notable prizes are the "unlimited bragging rights": * First place: ''Your programming language'' is the programming tool of choice for discriminating hackers. * Second place: ''Your programming language'' is a fine programming tool for many applications. * Third place: ''Your programming language'' is also not too shabby. * Lightning winner: ''Your programming language'' is very suitable for rapid prototyping. * Judges prize: ''Your team'' is a group of extremely cool hackers. Preparation of the task has become (or always was) a great technical ordeal for the host. Preparations for the 2007 contest began in 2005, and there were full trial runs of the contest two months before the real thing. ---- '''History''' * 1998 (http://www.ai.mit.edu/extra/icfp-contest/) ** Challenge: write a program to play pousse (extended tic-tac-toe) ** First Place: CilkLanguage (C with concurrency) ** Second Place (after tie resolution): ObjectiveCaml ** Judge's Prize: JayLanguage (very strong for its size) * 1999 (http://www.cs.virginia.edu/~jks6b/icfp/) ** Challenge: state machine optimization ** First Place: ObjectiveCaml ** Second Place: HaskellLanguage ** Judge's Prize: HaskellLanguage (Lightning winner) * 2000 (http://www.cs.cornell.edu/icfp/) ** Challenge: ray tracer ** First Place: ObjectiveCaml ** Second Place: ObjectiveCaml ** Judge's Prize: Team Helikopter (coolest test image) * 2001 (http://cristal.inria.fr/ICFP2001/prog-contest/) ** Challenge: markup language optimization ** First Place: HaskellLanguage ** Second Place: DylanLanguage ** Judge's Prize: ErlangLanguage (Lightning winner) * 2002 (http://icfpcontest.cse.ogi.edu/) ** Challenge: robot simulation, resource competition ** First Place: ObjectiveCaml ** Second Place: CeeLanguage ** Judge's Prize: PythonLanguage (Lightning winner) * 2003 (http://www.dtek.chalmers.se/groups/icfpcontest/) ** Challenge: Race car simulation, path optimization ** First Place: CeePlusPlus (16-computer cluster) ** Second Place: CeePlusPlus ** Judge's Prize: DylanLanguage/CeePlusPlus ** Lightning: ObjectiveCaml * 2004 (http://www.cis.upenn.edu/proj/plclub/contest/) ** Challenge: Ant colony simulation, out-compete the neighboring colony ** Note: Languages aided design of finite state machines which controlled ants. ** First Place: HaskellLanguage ** Second Place: HaskellLanguage and CeePlusPlus ** Judge's Prize: ObjectiveCaml (coolest meta-language) ** Lightning: JavaLanguage, CeePlusPlus, PerlLanguage, and m4 * 2005 (http://icfpc.plt-scheme.org/) ** Challenge: Robotic cops & robbers game involving cooperation and bluffing. *** The twist this year: two weeks after the main 3 day contest, the specification was modified and you had 24 hours to update your submission. This measured the maintainability of your solution and the agility of the team in the face of changing requirements. ** First Place: HaskellLanguage ** Second Place: DylanLanguage ** Third Place: HaskellLanguage ** Judge's Prize: DylanLanguage (for most effective reuse of the first submission [which came in first]) * 2006 (http://www.boundvariable.org/ & http://www.cs.cmu.edu/~rwh/papers/contest/icfp2006.pdf) ** The theme is "computational archaeolinguistics." (It was multi-layered this year. First you had to construct a virtual machine to decompress and execute the "codex" (INTRO). Then you had to modify a Roman-numeral-Basic program to hack into accounts on the Unix-like operating system (BASIC). This exposed the six ''real'' contest problems, which concerned esoteric language optimization, ''more'' ant simulation, and constraint satisfaction.) ** First Place: 2D (As credited), HaskellLanguage, PythonLanguage, CeePlusPlus, Bash and 2D (as on contest page) *** This was a joke. '''2D''' was one of the esoteric languages from the contest! They wrote a tiny bit of their code in 2D just so they could make this claim! ** Second Place: DeeLanguage ** Third Place: AssemblyLanguage ** Judge's Prize: CeePlusPlus and PerlLanguage (Best single-person team - 5th place) * 2007 (http://www.icfpcontest.org/) ** Host: Utrecht University ** Task: An alien has landed on earth and needs new DNA to survive. The alien's DNA is an interpreted, self-modifying program that is interpreted to produce RNA, and the RNA is interpreted to produce a bitmap. Given the original DNA and the source and target images, provide the shortest possible ''prefix'' for the DNA that produces the target image. ** First Place: CeePlusPlus ** Second Place: PerlLanguage, CeePlusPlus, PythonLanguage and Bash ** Judge's Prize: ObjectiveCaml (Best single-person team - 3rd place) *** ''Where did you find these results? I haven't seen a writeup anywhere yet. (DeleteWhenCooked) --IanOsgood'' * 2008 (http://www.icfpcontest.org/results) ** Host: Portland State University ** Task: Mars rover behavior (http://smlnj.org/icfp08-contest/task.html) ** First Place: JavaLanguage ** Second Place: ObjectiveCaml ** Judge's Prize: LaTex (with a PerlLanguage wrapper) ---- Planned contest * 2009 (http://www.ittc.ku.edu/icfp-contest/) ** Host: University of Kansas ** Date: June 26th-29th, 2009 ---- Maybe you'd like to look into the Judge's Prize winners. Judge's Prize is described as "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, use of parallelism -- these things may well count for something in the judges' eyes." Some heroes (sung and unsung) in the computing world have won the Judge's Prize. For example, the first Judge's Prize winners includes KenIverson, the TuringAward laureate, and the Erlang team from 2001's ICFP contest included JoeArmstrong, the main designer of ErlangLanguage, and so forth. You can even read some of their code. Enlightening. --JuneKim -------- See also: ExampleSizeIssues, ArgumentByLabToy