ICFP 2006 and The Cult of the Bound Variable
If you’ve ever wondered what a programming competition would look like if it was more like a game than a textbook exercise, then the ICFP 2006 contest may interest you.
Every year the International Conference on Functional Programming runs a programming competition, announcing the winners at the conference. Open to all, it’s a chance for enthusiasts to show off their favourite programming language, no matter how popular or obscure their choice. Or perhaps an honest propaganda exercise to show that functional languages can work as well as their mainstream counterparts.
The challenges normally involve writing a bot, writing a compiler, or a mixture of both. Past years have involved solving boardgames on square and hexagonal grids, finding small and efficient programs for simple virtual machines, and other strategy and optimization tasks. In 2006, instead of one gigantic problem, they went for a fun mixture of smaller, simple puzzles all in different languages.
The 2006 contest takes place in the context of a backstory about an ancient cult of programming language researchers known as the Cult of the Bound Variable. According to this story, the CBV was active in Pittsburgh, Pennsylvania thousands of years ago, carrying out computations on primitive devices powered by falling sand. Thirty years ago, excavators discovered an artifact of the Cult’s scholarship, an extensive codex that was written in no known language. Archaeologists soon gave up on deciphering the Codex, and, until this year, the Codex was stored away in the basement of the Carnegie Museum of Natural History.
Contestants were provided with a disk image and specification for a ‘historic computer’, and asked to implement a virtual machine. Upon booting it up for the first time, they were presented with a somewhat familiar login screen for a 'UMIX’ system.
12:00:00 1/1/19100
Welcome to Universal Machine IX (UMIX).
This machine is a shared resource. Please do not log in to multiple simultaneous UMIX servers. No game playing is allowed.
Please log in (use ’guest’ for visitor access).
;login:
Inside the guest account you’ll find a broken password cracker. Written in a quirky BASIC clone using roman numerals, it crashes on any non zero result. Your reward for editing the program and getting it to run is a new account to use. Each of the accounts on the machine have a programming puzzle inside (some of which parodied earlier ICFP challenges).
For three days in July, the contestants raced each other to find accounts and solve the puzzles inside. For the first two days the team scores were public, but the final scores would not be revealed until September.
Talk (1 hour)—http://www.youtube.com/watch?v=KjLLEMYK5g8
The talk follows the competition as it unfolded, revealing the puzzles one by one as the teams discovered them. These puzzles included ascii art, reverse engineering, theorem proving, term rewriting and an adventure game. Before announcing the winners, they explain some of the interesting parts involved in creating and running the challenge. The accompanying report covers the puzzles in more depth, but only the final scores. If you have the time I’d recommend watching the talk first.
Report (PDF)—http://www.cs.cmu.edu/~tom7/papers/tr-06-163.pdf
The contest was a mix of computation and humour that hasn’t been seen in earlier IFCP contests, and not matched since. If you’d like to try it, the support materials are still available at http://www.boundvariable.org.