This project is similar to the Program a Person project
from a few years ago. The main idea is to create a format for teaching programming through combining storytelling and object oriented code.
The participants in this project would be students/learners who don't know much about code, but are familiar with stories. Any age group could work. If there were participants who knew a bit more about programming, that would be great. This is also a great way to combine the disciplines of theater, writing and programming.
Everything that exists in the story has to be defined/instantiated/called as an object in the code.
Some objects would be:
For example, if the story were The Three Little Pigs, there would be calls for:
theStage = thisStage //stages can be given a variety of attributes, small, large, classroom, with lights, etc
theAudience = thisAudience //adult, children, deaf, blind, etc
aCharacter = littlePigOne aCharacter = littlePigTwo, aCharacter = littlePigThree, aCharacter = bigBadWolf,
aHouse = strawHouse, aHouse = stickHouse, aHouse = brickHouse
As the story develops and unfolds, the code would be displayed, highlighted, spoken to the audience. This could be be a line or block of code that is shown on a card. It could be shown on a display on a screen adjacent to the stage. It could also be spoken by a narrator (also an object instantiated above). Audience members could have a copy of the program or script, or they could write the program as they see the show.
Actions would be defined by a line of code:
littlePigOne build stickHouse;
bigBadWolf printf "I will huff and puff and blow your house down";
The end result would be that participants would have a better knowledge of how code works, and could start to see the way programming applies to everyday situations. A pretest and posttest could identify learning that results from this technique.
This experience could be followed up by:
- A more elaborate play programmed by participants
- Type based programming projects
- GUI based programming projects
- Discussions of how aspects of a program could be acted out
- Allowing the language of programming to be used in conversation to explain how things work in the world
If you are interested in helping develop the idea, keep the conversation rolling. If you have a teaching situation, try it with your students. I'm not aware of other projects that are similar to this, but surely somebody has done something along these lines.