I am helping design a CS-related activity for a Let's Talk Science competition, 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.

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.

My constraints are thus:

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)

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.

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, 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.

Do you have any ideas on what would make a fun CS-related challenge for teams of six high school students?

1 Answer
1

One activity that I really liked is the following: devise a way to communicate a short text message across a long soccer field, without using electronics and without shouting. You can use any large field or open area that is large enough that they won't be able to hear each other by shouting, yet provides line of sight.

The idea is that the team will get together in advance to devise a communication method. Then, half of the team stands at one end of the field, and the other half at the other end. The first half is given a message, and they have to communicate it to the other end. They are scored based upon the accuracy of the received message and how long it takes them.

This is a very cool exercise. It gives them a lot of opportunity for ingenuity. You can give them a few materials and they can select a signaling scheme -- maybe use flags, or mirrors, or large objects, or you name it.

They'll have to devise an efficient method of encoding text into something they can signal, and a good signalling algorithm. It's their interests to trade off efficiency for robustness (redundancy to deal with errors in receiving the data). They might choose to use a forward error correcting code (e.g., add some redundancy), or they might choose to use an acknowledgement/retry mechanism (where the recipient can signal "didn't get that, please try again").

Another thing that is nice about this exercise is that it provides an opportunity for teamwork and brainstorming and cooperation within their team. It's always more fun to do this stuff together with a few others than to do it on your own.

If you like, you can point out the rich history of signalling schemes that have been used in the past: semaphore, Morse code, the signal fires used by Alexander the Great, etc.

If you don't like that one:

CS Unplugged is one of the best resources. If they don't have anything you like, this might be pretty tough.

By the way, please keep in mind that competition has mixed effects, some good and some bad. Competition is good for motivating for some students but at the same time, some students find competition demotivating. Also, there is a gender gap here; competitions are more likely to turn off women than men, which might not be desirable in an activity for high school kids, given that there are already enough barriers keeping women out of computer science.