= UCC Programming Competition = You are wasting your time; most people will think the competition is stupid (and people that don't will not bother entering anyway). == Previous Programming Competitions == * [[http://www.ucc.asn.au/archive-2002/progcomp2000/|2000]] - Simulate a traffic system. The "first" UCC programming competition apparently. * [[http://www.ucc.asn.au/archive-2002/progcomp2002/|2002]] - Alphonsas the Super Seagull, XML parsing, and other things. * There was also one in 2008 and probably some others at some points, but no details are available. * [[http://progcomp.ucc.asn.au/2010/|2010]] - A variant of the "Prisoner's Dilema" game, winner Hipikat, runner up tpg, organiser [DJA] * [[http://progcomp.ucc.asn.au/2012/web|2012]] - The board game "Stratego", winner Peter N Lewis, runner up sulix, organiser [SZM] * [[http://progcomp.ucc.asn.au/2013/web|2013]] - "Quantum Chess" (cancelled due to lack of interest), organiser [SZM] == Choosing a Theme == The 2000 competition was a "make the most interesting simulation" thing, and 2002 had several [[http://code.google.com/codejam|Codejam]] style problems. From 2010 onwards the themes involved some sort of "battle" system, and possibly game theory. This hasn't proven very popular so far. 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. Also, even if the theme sounds remotely complicated (eg: "Quantum Chess") it doesn't matter how little code people actually have to write, they'll be too scared to investigate further. == 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 [[http://git.ucc.asn.au|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 progcomp servers * 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 migrated to [[medico]] at some point)-- Replaced by [[curious]] which is actually [[sigma]] with a new name. * [SZM] suggests using [[curious]] for all future competitions, so that they are all in the same place. Contact [SZM] for more info. === General Stuff about the server === * 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|http://progcomp.ucc.asn.au]] * Install apache on the server, edit [[Network/Services|DNS]] so that "progcomp" points to the server, and unblock http in [[Network/Firewall|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 [[http://lists.ucc.gu.uwa.edu.au/mailman/listinfo/progcomp|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 * In 2013 there was a poster. We used it to cover up the "toilets this way" sign at the GigaLAN to stop people from going that way. * Facebook Event? == Support == * You should write some sample programs to get people started. Having said that, no one will actually read them. * 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. == * Yeah, don't bother