It's all in the code

The NRICH Number Plumber

leave a comment »

The Number Plumber is one of those teaching applications I thought I wouldn’t have to write. It’s such an obvious idea that someone must have done it before. Well of course they have, but – at least in my view – badly. I await your comments pointing me to all the applications ‘out there’ that we (and I’m including Alf Coles who must take the credit for first pointing this out) should know about :). NRICH is a great believer is so-called ‘rich’ mathematical problems – problems that have some depth to them, that can be tackled in a number of ways, that lead to conjectures, that may hint at theorems. Well it’s about time that we applied the same philosophy to our interactive resources and started to design those with depth. We’ve done this in the past on occasions – Shuffles and the Geoboard spring to mind – but all too often we invest valuable time in one-offs that serve one purpose and one problem.

There is a challenge involved in adding depth to a teaching animation. The more that an animation can do, the harder it can be for teachers and learners to feel comfortable with those features, and the harder it is to write. The aim must always be to discover natural user interface metaphors that feel right. While the well-understood user interface widgets such as menus, buttons, steppers and combo-boxes do have their place in this regard, they can also make a learning application feel like a tedious form-filling exercise. We do need imagination to inspire.

The Number Plumber has a new widget at its core which I call a ‘Flow’ in the source code. In the animation itself, flows appear in the guise of ‘Inputs’, ‘Operations’, and ‘Outputs’. The flow metaphor I have in mind is of a wash basin complete with drain pipe and outlet. Numbers are like water in this metaphor. You can drop them into a flow and they will travel down the drain,  possibly dropping into other flows where they may mingle in interesting ways with other numbers, finally emerging in a transformed state at the output pipe.

You can drag inputs, operations, and outputs from their panels (top right) onto the main stage of the application. Each flow has a plumbing joint at its base represented by a white blob. Dragging this out gives you a pipe and an outlet. Drop the outlet onto an input pad in another flow and you have made your first connection. The world needs more plumbers.

In this first post I’m not going to give you a complete manual. I’m really rather hoping that you don’t need one. I’m hoping you will pick up a Number Plumber and play with it. It should not be too hard to discover how to make interesting examples. However I do want to give you a two step roadmap – something that will help you find your way round.

Create an Example

Step 1: Create an Example

In Step 1 we open the Example Builder and start to create an example. When we’ve set things up exactly how we want it, we can save the example for later use. You can create a hyperlink to any saved example so long as you publish the saved file at a web address. The step 2 example shown below was saved in ‘step2.xml’ and then uploaded to a web server. You can access the live step 2 example here and you can see the saved example file here – it’s just text.

An example of a defined function. Good for 'Guess the Map' examples

I hope that’s enough to get you started. One more thing, if you create some neat examples, do publish your XML files somewhere and let us know about them. We’d like to start building a list. You can tell us where your examples are here in the comments or email them to


Written by gmp26

February 23, 2010 at 11:14 am

Posted in Number Plumber

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: