Creating a High School Programming Competition?
goatmon asks: "A few high school computer teachers across Tennessee have organized an annual "Geek Games" competition. We started last year with a great competition in PC repair, patterned after the VICA competition. This year we are trying to expand to add a competition in computer programming. The question is, how do you create a language-independent computer programming competition? Is it fair to have a timed test if one group of kids is hacking in Python and the other in C++? And who wins, the one with the shortest code, the fastest programmer, the one with code that works? Can anyone offer insight from experience or a pattern that we might be able to follow?"
My suggestion to you would be to set a goal that is generic. Decide on a system that whould be built. This can be something graphics based (e.g. a simple calculator that does addition, subtraction, division and multiplication), information based (e.g. building a time tabling system), networking (e.g. a system where input occurs on a client, and processing on a server).
However, the trick is not to specify technology. In fact, you could make it quite clear that it doesn't matter what development paradigms that are used. What is important, though, is that the goal be described as something that is useful. (I remember being brilliant with my repeating print out on my ZX81, but realising that no one wants to see "Eibhear was 'ere" 10, 100, 1000 or any amount of times.)
In short, decide what you would like to be produced by the entrants, and let them decide how they do it.
With respect to judging it, you could devise a set of qualitative criteria that can easily be assessed by judges with a modicum of technical experience. Criteria could include:
These criteria are somewhat subjective, and to ensure fairness for all entrants, there would have to be a panel of judges, like in the figure skating competitions.
Then there is a set of quantitative criteria, which would enclude:
The point is to make the competition such that one geek with a linux and a C/C++ compiler and years of programming experience will not have an advantage over a kid with access to and a preference for HTML/javascript/VB/perl/etc. By making the requirements of the competition non-technical, the entrant will focus on the means best used by herself, and judgement will not be prejudicial.
Hope this helps.
Éibhear.
You should leave the language choice up to the students. Someone who picks C to do pattern matching and string operations instead of Perl deserves the buggy code they'll get (and the time they'll waste). Actually, this will end up enriching the contest, so far as students who learned more than one language will be able to pick the one best suited to the task at hand, a skill which can make or break a good design.
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/