Session - SPA Software in Practice 2018

BCS SPA Software in Practice

2nd – 4th July 2018

Book your place now


Internet of things with physical programming

A practical workshop for gaining insights on using biological distributed algorithms

Group work on physical program


In a smart sensor scenario of Internet of Things, e.g. smart carpark, pollution sensors,etc) nodes (small computers with wireless capability ) are positioned distributedly, depending on the applications, they can also be mobile. The nodes are micro-controller/processors with limited computational power (although this has been increased in recent years), memory and battery powered. They usually have a common goal to achieve, e.g. get the best estimate of pollution levels given the accuracy and resolution (time and space) requirements.
Several common challenges arises, how to conserve battery power, how to route the data effectively back to the internet, how to trade off in-network processing with some data loss and routing all the data back to the main base to be processed, etc. The nodes need to be able to make individual decisions with some information from their neighbouring nodes only. The network as a whole needs to be self-adapting and self-organising, while achieving a common goal.
Interestingly, nature is really good at solving distributed problems. We can find examples in bird flocking, fish schooling, ant foraging, firefly synchronisation, etc. These little creatures are known to work individually, and coordinate with nearby individuals. As a group, they can achieve a common global objective. This are also emergent behaviours, the phenomenons that emergent from the relationships of a group of individuals, rather than the individual parts.
In this workshop, the participants are asked to perform some simple programming tasks - mainly to complete some exercise and tune parameters.
The focus of this workshop is on algorithm designs and group discussions. However, realising the workshop with physical programming is more engaging and we can visualise the outcome immediately. The participants are encouraged to make some individual decisions - we would like to observe the outcome of emergent behaviour from this workshop.

Audience background

* Some programming experience preferred but not essential. The programming would be simple and full instructions will be provided. Also we will team people up with different skills. The programming language is Python
* Algorithm design, problem solving activities in groups
* Computer scientists, teachers, anyone who are interested in works on Internet of things and distributed algorithms.

Benefits of participating

The participants will gain insight of the basic concepts and trade-offs of distributed algorithms for Internet of Things development
The participants will gain experience of physical programming
The participants will see how distributed algorithms can run as a workshop.

Materials provided

We will provide 20 Micro:bits (if there are more participants, we can possibly loan some more), pens and post-it notes
The participants will need to bring laptops/computers
We need wifi access from the venue (We program via web interface)


Group problem solving
Microbit programming
Pen and paper algorithm design

Detailed timetable

00:00 - 00:15
A short presentation on introduction, distributed algorithm, and how the workshop would run.

00:15 - 01:00
Familiarise with Micro:bit programming interface and Python programming language.

01:00 - 01:45
Firefly Synchronisation
1. How does the flashing synchronised?
2. How do you think changing the flashing intervals would change the behaviour,
3. What would happen if the nodes have different flashing periods?
Without coordination, can we get the whole room of participants’ microbits to flash synchronously? What would happen if we,
- change the radio power to a random range
- change the synchronisation period, would it synchronised?
- ask the participants to walk around to random positions, starting their microbit at different time.

01:45 - 02:30
A paper group exercise (or wifi exercise) we will ask the participants to use what they have experience today to derive a distributed game.

01:00 - 01:15
Concluding remarks - results and outcomes of the workshop


Mail to participants for resources used on the day, outcome of discussions and groups exercises
Maybe a GDS blog post


This concepts has not been tested in another workshop, although the session leaders have experience running other physical programming workshops.


  1. Venus Bailey
    Government Digital Service
  2. Maisie Fernandes
    Government Digital Service
  3. Irene Lau
    Government Digital Service