Computing in an unfriendly environment.

A brief history of computing in UK Schools

For many, computing began in 1981 with the release of the BBC Micro as part of the Computer Literacy Program.

These computers were sent out to schools across the United Kingdom and many children began to learn principles of computing with them. There was criticism that resources and guidance for teaching with these machines was lacking, often leaving schools wondering what they were for. University tutors frequently bemoaned that the introduction to (BASIC) programming that their students had experienced had done more harm than good but nevertheless, children were getting down and dirty at a bits and bytes level and this was a good thing.

In the late 1970s, Intel released a defining kind of new processor called the 8086. This was the first in a line of computer processors that has powered most desktop computers, made famous by IBM.

In 1985 a company known as RM released a machine for education called the Nimbus. It was based on the second in line Intel processor (80)186. This was the death knell for the short lived computer literacy program.

The impact of the “PC” had a profound effect on Computing in Schools.

Over the following 20 years programming and computer science died and, as noted in the Royal Society Shut Down or Restart was replaced by  uninspiring ICT “basic digital literacy skills such as how to use a word-processor or a database”. This statement is rather extreme, there were some very inspiring and genuinely useful qualifications based on ICT which have now ceased to exist. The Diploma in Digital Applications being one such example.

During that period RM maintained a leading position by reselling equipment and software as well as network administration.

The release of the “Shut Down or Restart” document was a watershed moment. Suddenly in schools, computer science mattered again.

Unfriendly Environments

In 2011, with the release of Shut Down or Restart in my role as Curriculum Leader for ICT (Head of Dept) at Eastlea Community School I decided to put programming back on the curriculum. My initial attempt at this was with Microsoft Small Basic. I tested this on one machine, was pleased with the result and so raised a Change Request with RM.

A Change Request was an order to the company providing network and computer support to install some new software on a number of machines. Alongside the annual fee that the school had to pay, this would incur an additional and considerable fee for the extra work to be done.

Before this was completed I learned that there was no way RM would ever allow Small Basic to be fully installed on their network as the students create .EXE files when compiling their programs. These are viewed as a serious risk to security.

Around about the same time, Raspberry Pi were releasing their early model B, selling in the UK for around £35 I purchased thirty of them and sourced some very low cost cables and power supplies to go with them.

With my new year 10 GCSE Computer Science class we spent our first lessons constructing a network of our own, separate to RM and using Raspberry Pis for Computer Science.


We saved space and cost by using the monitors, mice and keyboards from the PCs we already had in place. I’ve written about all of this in detail in the Raspberry Pi community forums here.

This worked really well for me and one other colleague. In over three years the main problems we have had have come about as a result of SD cards breaking, a design flaw in the raspberry pis means they stick out and the slots easily broken.

Fear of the unknown

For busy teachers with a background in teaching ICT, working in a busy school where it is not always possible to provide the support that is needed maintaining a network like this is not possible. It does eat up a lot of time in lessons giving out SD cards, tracing dodgy cables and simply swapping over keyboards and mice.

One other colleague through necessity had a similar setup in his classroom. There were two of us teaching GCSE CS, at the time the Raspberry Pi network was the only way for us to deliver the course. Without this incentive it is simply too much extra work for an ICT teacher to take this on in their rooms.


I was recently asked by Microsoft if I would like to take part in a pilot of their “Azure” for eduction program. I was given a brief, the kind of brief I really like. Basically, here is Azure. See what you can do with it.

Azure provides powerful virtual computer that can be set up with a range of operating systems. Not just Microsoft but also embracing Linux as well! I have to say I am very impressed with Microsoft’s modern corporate attitude to open source systems as a valuable partner, not a competitor.

You can use a remote system like VNC to access your virtual desktop. With many schools still struggling to get what they need for teaching computing onto their networks I wondered if it would be possible to provide a VNC like interface to a virtual computer for programming and so on through a standard school internet connection and web browser. It turns out that you can, by using a system called Guacamole!

A “clientless browser based remote desktop gateway” based on HTML 5.

I set up a test virtual machine running Ubuntu in Microsoft’s Azure cloud.

I configured this with the Guacamole system and have done some single user testing. Results so far are very encouraging, to all intents and purposes I have got access to a computer that is more than adequate for teaching computer science but without the hassle of administering a network.

It is as simple as issuing student login details and the website address. Students (and teachers) then login by entering the URL in their browsers. They are then using a computer in the same way they do with the physical computer in front of them, they have their own logins and their own secure place to save their work. (This work can be accessed by the teacher by using the “root” login)


The login screen.

Screenshot from 2015-12-28 17:31:00

Python and Scratch. Running on my virtual Linux computer in a web browser on my Ubuntu laptop.

So far it seems like a very simple and straightforward approach to providing what’s required for teaching coding. I look forward to the real tests, next week, this will be when I ask other teachers in my department to deliver Python programming lessons to their classes with it. I wonder how it will hold up under the load of many tents of users accessing it simultaneously.


Computing in an unfriendly environment.

Teaching and Learning: Micro:Bits

Approximately 6 weeks ago now, while I was minding my own business (probably prevaricating) I received an email from my regional CAS coordinator asking would I be, in principle happy to be linked up with the BBC and Microsoft to work on a project with some BBC Microbits.

I agreed and within a few hours I received a call from Microsoft, this was the start of what can only be described as an amazing adventure for our school, students and myself that has included a visit to our school from Lord Tony Hall (Director General of the BBC) and Satya Nadella (CEO of Microsoft ) to see the work our students carried out as well as trips to Downing Street and to the House of Commons!

This opened a whole host of ongoing opportunities for us, not least we recently visited 10 Downing Street to kick start the Hour of Code week with Nicky Morgan and David Cameron.

Fantastic as this was these blog posts are not going to focus on these. I will link in to our school’s media page for this. Instead I want to take the opportunity to share some of the classroom methods we developed while working with the Micro:Bit.

The Micro:Bit

In a nutshell…

…is a bare circuit board device, brainchild of the BBC and inspired by the anniversary of the birth of the BBC Micro computer some thirty years ago now. It has been produced in partnership with lots of companies and organisations. Microsoft has been a major partner in it’s development.

My best analogy is that it is like an Arduino with a host of on-board sensors and a very child friendly programming interface. It has an ARM processor and flash memory for storing programs, it contains some very useful sensors;

  • an accelerometer for movement, tilting, shaking etc.
  • an EM sensor which is generally configured as a digital compass but can be pressed into other uses.
  • A thermometer.
  • a 5 X 5 display grid of red LED lights.
  • 3 accessible GPIO connections which can be configured to work as analogue inputs (via an internal ADC) or outputs (via PWM) or as 3V digital input / outputs.
  • A 3V power connection and a ground connection to enable connections to other electronic systems like projects, robots, toys and so forth.

Using the Micro:Bit

As a device on it’s own the Micro:Bit is a great learning device. We spent about two lessons with our year sevens working through the tutorials in the fabulous Quick Start for Teachers guide. In hard copy this “teachers guide” actually works really well in the hands of students. The official Micro:Bit getting started section also has some great resources.

The guide walks you through programming the device and using the sensors, for example making a rock paper scissors game that employs the LED display to show the rock, paper or scissors and the accelerometer to activate the game.

The Micro:Bit really comes in the classroom into it’s own as a device for invention when used in conjunction with other devices like motors and servos. I want to describe some of these methods here and link them to core computing processes and hardware concepts.

Adding other electronics to the Micro:Bit

There are a wide range of ways to connect other devices to the Micro:Bit. For example you can connect your phone or tablet via Bluetooth (there are handy functions included in the API for doing this). There is also an I2C interface buried within the device.

LEDs and even low power relays can be connected and powered directly from the 3 GPIO ring connectors.

For bigger projects, on it’s own the Micro:Bit is not able to supply enough power to drive something like a reasonable size DC motor. I suspect you could drive a really tiny one, perhaps the motor from one of those flying helicopter toys might work but I never tried it. I’ve not actually managed to find a reference for the maximum power output of the Micro:Bit GPIO. It seems to be more than a Raspberry Pi and I believe it also includes some overload protection.

H bridges, Micro:Bits and Motors

If you want to connect anything that needs more juice then one way to do this is to ‘amplify’ the analogue output capability of the GPIOs. The cheapest and simplest way to achieve this is by using a H bridge IC.

We used a L293D. This is a great little microchip which you can buy for under £2.00 and needs barely anything more than a few wires, a separate power supply for the motors and a way to connect it all up, such as breadboard.

This microchip has (input) pins which you can connect directly the Micro:Bit outputs. When the Micro:Bit sends a signal to one of these input pins it is reflected in the output from the L293D, except with more power.

For example, if we want to drive a motor at full speed, we send the value 1024 to the analogue output that’s connected to the L293D. If a suitable motor is connected to the corresponding output it will spin at full speed.

To make it spin at half speed, reduce the value to 512, a quarter speed would be 256 and so on.

We can control up to 3 motors with the three Micro:Bit outputs as long as the motors are all only going to be spinning in the same direction.


(In this simple circuit above, the minimum external power is 4.5v (eg. 3 AA batteries) and the maximum is 7 v. This microchip can actually go as high as 36v but not with the configuration shown above as I have combined all the ‘+ power’ and ‘enables’ for simplicity.)

The same H bridge can be used to control direction, making motors spin forwards or backwards but this requires two signals, one for each direction. As the microbit only has 3 outputs, it can use two of these outputs to control the H bridge and drive a single motor forward and reverse. There is not enough for it to directly control two motors (for turtle robots and the like, although you could drive a single motor forwards and backwards and use the remaining output to control a relay for steering)

The wikipedia entry for this microchip contains a very easy to follow guide for wiring it up if you want to have a go yourself. When I return to school I will also get some of our students to make a how-to video and write-up.

In the meantime here is a couple of videos of it in action, under the control of a microbit. (This was made by me, one handed and in some excitement, sorry about the quality)

You can also see this in action in the video above, it’s being used to control two motors and propellers attached to a model blimp gondola!

The great thing about this method is that you can very easily and cheaply control up to three simple devices. They do not have to be motors,they might also be solenoids or even small incandescent bulbs (for example).

It is possible to use the three outputs and expand these to many more outputs by using the concepts of parallel and serial data connections to another device such as a Raspberry Pi or an Arduino. We did use a method like this to make the little car turtle robot you can see in the video.

We also used the Microbit to control servo motors to make robotic arms and a walking robot (well, not quite but we are getting there).

I will write about these methods in a further blog entry.

Teaching and Learning: Micro:Bits