Revision 3 as of 2013-01-31 15:37:19

Clear message

UCC Programming Competition

This page is meant to be a guide on how to run a programming competition for the UCC.

This may involve Work (TM). Most of the work involved is in setting up the judging system, which will depend on your theme, and hence this page is pretty useless fairly general.

Warning: Not many people enter UCC programming competitions. Wheel members may want to find something more useful to spend their time on.

Previous Programming Competitions

  • 2010 - A variant of the "Prisoner's Dilema" game, winner Hipikat, runner up tpg, organiser [DJA]
  • 2012 - The board game "Stratego", winner Peter N Lewis, runner up sulix, organiser [SZM]
  • 2013 - "Quantum Chess" In progress, organiser [SZM]

  • All previous competitions should be under git

Choosing a Theme

Usually the themes involve some sort of "battle" system, and possibly game theory.

Make sure you choose a theme that doesn't require entrants to write more than a few hundred lines of code at the most, or no one will be bothered to enter. However, the theme should be complex enough to give people freedom to try a range of strategies.

Designing the Judging System

For battle systems, you will need a manager program to interface the different entries. You will also need a program to judge the competition (this may be the same program, depending on the complexity of your theme).

To make things easy for competitors, entries should just write to standard out and read from standard in, and not have to worry about inter-process communication. Whoever writes the manager program (hint: Its you) will have to worry about that. Look at the previous competitions for source code that might be useful.

Gitosis

  • The competition should be put under git as soon as possible.

  • To add a repository to gitosis, you need to git commit to the gitosis config file. But to be authorised to commit to the gitosis config file, you have to be in the gitosis config file as authorised to commit to the gitosis config file
  • Much confusion (about the chicken and the egg) can be avoided if you just su to the user "git" (who is authorised to commit to the gitosis config file).

Competition VM

Don't run random people's code on servers or club room machines!

Except in 2012, where [SZM] destroyed the VM and [DJA] let him use sigma

Past VMs

  • 2010 - Murjan - meesau:/somewhere (???)
  • 2012 - Mufasa - motsugo:/home/other/vm/mufasa (libvirt and qemu) Replaced by sigma

  • 2013 - progcomp - runs on motsugo under libvirt. Might be migraded to medico at some point.

  • [SZM] suggests using the VM progcomp for all future competitions, so that they are all in the same place.

General Stuff about the VM

  • Don't run the competition as root; add unprivelaged user "judge" with disabled login
  • ssh access is useful
  • Don't bother setting up LDAP for logins, but add wheel member's root keys for ssh
  • On debian, altering motd is stupid interesting.

  • Competitions should be stored under /home/judge/progcompXXXX where XXXX is the year of the competition. Please don't remove existing competitions.

Webpage

  • The webpage should appear at http://progcomp.ucc.asn.au

  • Install apache on the VM, edit DNS so that "progcomp" points to the VM, and unblock http in ucc-fw.

  • Make a webpage; put it under progcompXXXX/web (you should probably include it under git)
  • Add the competition to the list of competitions in /home/judge/web/index.html and link to its webpage

Advertising

  • Send an email to the Progcomp Mailing List

  • If its been a while since the last competition, also advertise on the ucc list / ucc-announce
  • In 2010 there were posters in Cameron Hall
  • Facebook Event?

Support

  • Offer at least one, preferably three or four, sample programs, in a few languages.
  • Write the sample programs sooner rather than later. If you find writing a sample program excessively hard, you may want to consider altering the rules to make things easier, or even giving up changing the theme altogether. Which certainly didn't happen in 2012. Or 2013.

  • Create an irc channel, with an informative topic, such as "The UCC Programming Competition"
  • The topic should probably contain a link to the webpage.

Misc.

  • You will probably get 2 or 3 entrants