The London Science Museum has some interesting new exhibits as part of its Codebreaker exhibition that demonstrate the three key ideas in programming - looping, conditionals and variables.
The exhibits were all built by Hirsh & Mann and the brief was to create something connected to the progress in computing and the spirit of engineering and innovation. As it turned out, they selected three installations that demonstrate what the team rightfully identify as the key programming principles.
If you ask a working programmer what the three key programming principles are, you would probably get something about encapsulation, inheritance or whatever the latest high-level language trend was. Ask a computer scientist and they would probably waffle about recursive function theory. In other words, it is difficult to get a sensible answer from people too close to the subject matter.
But if you focus on what programming is about and what makes it different from other subjects, at the most basic of levels then the idea of the variable, the loop and the conditional are the key primitives.
At the heart of each exhibit sat an Arduino - so no random 74 TTL logic chips here.
The one on looping has a spinning rotor with LEDs that create persistence of video patterns that visitors can control using 20 buttons.
The conditional display presents a version of Wolfram's cellular automata with the user able to set the rules.
The exhibit about variables is a mechanical tree with sliders to alter the angles.
The clever and perhaps daring part in this age of dumbing down is that the central display has a simplified pseudo code that highlights the current line being executed.
If you can't get to the exhibition then take a look at the following video which shows some of the construction details:
These are all great fun and very impressive to look at, but I'm not sure I agree that they get the fundamental concept over to the innocent viewer. Perhaps this isn't possible to achieve in a fun and enteratining way? Could you think up something better?