An Alternative to “Hello world!”

There’s an appreciable risk that this post may be considered sacrilegious within the programming world.  If there’s one thing, even  just one tiny, single thing, that every programmer knows about teaching programming, it’s that the first lesson should be how to output the string, “Hello world!”  (There’s some dispute as to whether the ‘w’ should be capitalised but the ‘!’ is entirely necessary.)  How heretical would it be to suggest that, not only is this probably not the best place to start, but that a better alternative can be found by turning around a bottle of shampoo?

ShampooBottle Continue reading


Maths and Programming Working Together

When the Four Colour Theorem (FCT) was finally ‘proved’ in 1976, it upset a lot of mathematicians.  It was the first significant mathematical concept to be proved with a good deal of help from a computer and, for many, that didn’t make it a real proof.  Although we’re largely (maybe not entirely) OK with it now, the objections at the time weren’t just theorists’ snobbery.  At the heart of it all were some fundamental questions about the role a computer could or should play in formal logic.

Essentially, the FCT says that the maximum number of different colours needed to colour a map, so that no bordering countries are the same colour, is four.  (Colours can touch at a point but not at an edge.)  It’s easy to show that five will always do the trick and, in fact, most normal maps only need three.  However, certain types of map certainly seemed to need four so was four always enough? Continue reading


Are There Any Hard Problems?

That looks like a hopelessly vague question, and it is unless we’re prepared to clarify it a bit.  On the other hand, we already know there are some impossible problems so surely there are some that are just hard?  Again, we’ll need to work out what on earth we’re talking about here.  Let’s start with what we actually mean by a problem in a computational sense …

(Be warned: There are one or two simplifications and liberties with precision in what follows; it’s well-intentioned but may upset the purist.)

Well, actually, even that isn’t simple and there’s no absolute agreement on what a good definition would be.  (We’ve seen previously that mathematicians and computer scientists don’t always see eye-to-eye.)  It’s cheating a bit but it’s probably easier to give examples and this should work well enough for us.  At least in the context of computing, these are all valid problems:

  1. Calculate    2 x 4 + 9 – 3
  2. If   5 – x  =  2   what’s x?
  3. Find the largest from    5, 7, 1, 4, 8, 5, 2, 4, 8, 5, 2, 6, 7, 7, 3, 3, 2, 4, 3, 6, 7, 7, 6, 5, 4
  4. Sort    25, 44, 66, 72, 12, 45, 56, 90, 45, 69, 11, 10, 12, 42, 88     into ascending order
  5. Arrange   1, 2, 3, 4, 5, 6, 7, 8, 9   into a magic square
  6. What’s the best way to get to Paris?

Continue reading


The ‘Real’ Internet of Things

(This post is derived from a talk given at the 2012 Wrexham Science Festival.)

There are so many different ways of describing the Internet of Things.  On the one hand, maybe it’s what the original Internet was always destined to be; on the other, it’s about as boring as it gets.  Tag just about anything and everything we can stick a label on, let them talk to each other, then turn the existing  Internet into a massive database of things that can be referenced, interconnected and used any which way we like.  Great if you really need your fridge to reorder the milk for you or the plants to water themselves but hardly inspirational.  Two features, however, give the proposed (and not yet fully considered) IoT a serious ‘Oooh!’ factor …

Firstly, the ever-increasing intelligence of the Internet will allow us to manipulate this data in new and exciting ways.  More and more, the evolving Semantic Web will be able to understand the information it’s working with and make the best use of it for our benefit.  Our personal and working lives are about to become completely automated and made easier by web intelligence.  Secondly, and potentially on the darker side, other hardware and software developments will extend the IoT’s reach.  Face-recognition, image-scanners and numerous other advanced detectors and sensors will soon mean that everything can be read, whether it’s deliberately labelled or not.  We, and everything we use or own, may soon become part of the Real Internet of Things (RIoT) and we might have to expect to be identified and traced in everything we do.  So what will the future will look like?  Are we heading for paradise or Big Brother? Continue reading