Question

(See end for summary of updated question.)

I want to convey to groups of people (kids or adults) how a computer program written in a high-level language works, and what the relationship is of that program to the computer as a consumer device as they know it (a TV-like box that "does" typing and "internet").

I want to do it without computers. Not because I don't have them, but because I want a fun, physical activity that involves people the way acting, dance, music, sports, and capture-the-flag are fun.

I have read Teaching beginner programming, without computers here on stackoverflow; its reference to Computer Science Unplugged comes closest, but most of the activities there are either too complex, require too many props, or focus on specific computer science concepts.

I have also read Games that teach Programming Fundamentals but almost nothing matched my description in my first paragraph above.

And just for good measure, I have read Should functional programming be taught before imperative programming? so I am open to activities to teach either of those.

Keep in mind these requirements, some of which are subjective:

  • physical
  • no props (or very few)
  • fun
  • involves as many of the senses as possible
  • simulates the experience of writing a program and running it on a computer
  • no computers anywhere in the picture
  • is a game (competitive or cooperative)

It occurs to me that one source of material might be those team-building games that companies send you on. But those are designed for team-building, not teaching what writing and running a computer program is. But maybe you get the idea. Another way of looking at this question is to suggest what search terms I should use to find more answers -- though I usually can pick good search terms, an implicit "or" of "computers" and "games" will not find what I want because that combination is reserved for something totally different.

Update:

  • Thanks for responses so far!
  • I have now clarified that I'm interested in simulating the operation of a high-level-language program rather than either how the machine operates (1's and 0's) or specific concepts
  • With that clarification, you will be able to say specifically whether your game suggestion or game found teaches about functional or about imperative programming
  • With that clarification, please also respond to the part about games to teach the relationship of a computer program to the computer. What needs to be taught is that other consumer devices that physically look similar do not have "programs" -- why?
  • Your direct answers are much appreciated; if you can also find more ready-to-use sources beyond Computer Science Unplugged that will be great too
  • See my comments on answers so far, all of which are made in the spirit of thanks for what you've written, and not meant to be critical in any way.
Was it helpful?

Solution

Fundamentally, computers only do a few, very simple things:

  1. They can do basic math,
  2. They can move data from one place to another,
  3. They can loop, and
  4. They can make simple decisions.

The power of computers lies in the fact that they can do these simple things millions of times per second.

At the physical game level, I believe this is about all you can teach. Beyond that, I believe computer simulations and/or multimedia presentations are required (or, at the very least, a whiteboard).

OTHER TIPS

1. Human Bubble Sort

Just test the Human Bubble Sort => ask a group of people - I'd recommend from min. 4 to max. infinite :-) - to sort themselves on the Bubble Sort principle, based on the alphabetical order of their family name.

Example : https://www.youtube.com/watch?v=8QD-R_MfDsQ

Works for kids and grownups.

2. Human Frenzy Robot

With physical people, paper sheets, and arrows + symbols written on them, reproduce the principle of the Frenzy Robot in real life. Look for "lightbot" on Google - I cannot post more than two links yet. I've just created my account to answer here :-)

3. Primo

For very young kids (after 4 years old), I really like Primo, a programmable small toy you put in motion on a grid => http://www.primotoys.com/

You could demonstrate thread locking by having two teams competing to get two halves of a key that opens the door to some reward (sweets for kids etc.). Each team grabs half the key each and then neither can open the door. If they cooperate then they both get the reward.

This might be a bit advanced - not sure now having re-read it.

It really was fun in CS Class: The Living Turing Machine.

You need:

  • Some place to place the formal rules of the machine, in the beginning it's pure chaos :-D

  • Humans:

a. A bunch of people that stand in line and simulate the linear memory, you just need a way to distinguish between 'ones' and 'zeros'. We did this by standing in the foreground or in the background, but I could also imagine other ways...

b. One person for every state of the machine

c. A 'reading head' which moves left or right on the memory.

Now you just need sample programs, start simply, for example with inverting a pattern. Then go on to more complex programs like increment/decrement.

For inspiration : an example of how physical people can materialize the Bubble Sort algorithm through dance => https://www.youtube.com/watch?v=lyZQPjUT5B4

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top