I am helping design a CS-related activity for a Let's Talk Science competition (http://www.letstalkscience.ca), which promotes STEM amongst high school students. In the competition, teams of six students will move from station to station, trying to complete each as quickly as possible.<p>One station might give the team a metre stick, then ask them to measure the height of a building. (This can be solved by using similar triangles to estimate the building's height.) Time penalties are added to the team's completion time depending on how close their answer was.<p>My constraints are thus:<p><pre><code> * Most students won't have CS/programming knowledge
* Challenge should not require a computer
* Idea should challenge teams of six students for 15-20 minutes
* Challenge must have clear answer that can be objectively scored (not judged)
</code></pre>
One reasonably good challenge presents a sentence encoded with a Caesar cipher, then asks the students to decode it. The person running the station give a short explanation of what a Caesar cipher is, then leave the teams to decode the text. Time penalties are awarded based on correctness -- each incorrect character adds a 30-second penalty.<p>The Caesar cipher idea has been used often in the past, however, and I'm trying to develop something novel. I have been through the various activities on CS Unplugged (http://csunplugged.org/activities), but none appealed to me -- the exercises I saw were generally aimed at illustration and not suitable for competition, were too simple, or required too much explanation of background knowledge.<p>Do you have any ideas on what would make a fun CS-related challenge for teams of six high school students?<p>Thanks!
It was always intriguing to me how some popular graph algorithms are rather intuitive, and if left to your own devices and no knowledge of popular approaches you are likely to use some variant of them in problem solving.<p>One such is constructing a minimum spanning tree. Give them some problem where they would need it on a dense graph and let them struggle to piece it together (and penalize for wrong edges included). At the end you could explain how their strategy related to Prim or Kruskal's algorithms.<p>Another is finding a shortest path from 1 vertex to another. The context would be rather easy and you could again penalize for an incorrect path taken and let them argue about the optimum route and introduce Dijkstra's at the end.<p>I think context is the most important thing. No high schooler wants to be given an arbitrary graph and feel like they are doing some mundane problem on it. Put some contextual spin on the problems (perhaps locally relevant) to pique their interest and make it hit home for them as to why these are important problems/solutions.
Thinking back to some of the exercises that I did:<p>+ Calculate the nth term of Fibonacci Sequence<p>+ Comparing the efficiency sorting algorithms<p>+ Calculating the resulting angles of the hands of a clock based on a digital-time input.<p>You could probably apply many of the easier Project Euler questions for your competition with little modification.<p>Alternately, if you want more computer-related problems some of the /r/dailyprogrammer exercises might be applicable (however most require a computer and programming knowledge)