The BBC micro:bit

I returned from the Easter break to find 4 huge parcels containing 280 BBC micro:bits (one for each Y7 in school.  This is tremendously exciting!  I’ve had my teacher bit for, erm, a bit and have loved playing around with it, as has my 6 year old daughter and her friends (a small plea – MORE of this sort of thing please BBC – lots of other year groups and especially primary teachers would LOVE these resources).

2016-02-16 09.16.24

Little Miss Colley and friends investigating the micro:bit.

The Y7 micro:bit pioneers club have been writing some excellent programs such as a compass, a real life snakes & ladders and a magic 8 ball too.

Now it’s time to start introducing all of Y7 to their new devices.  We’ve made the decision to keep the micro:bits in school whilst we work through the 4 lesson scheme of work and give them out at the end once pupils have become more familiar with the devices and (hopefully) some fires have been lit.

As usual, I’ve been busy creating resources, so here are:

My YouTube playlists:

My microbit website profile – basically all the scripts that I have written.

The scheme of work and lesson resources.

Spicing Up Text Based Programming

It’s been a while since my last post.  I’ve had my head down working away at the demands of teaching KS3 computing and GCSE computer science for the first time.

Without a doubt the toughest learning curve has been teaching Java to my Y9s, where class sizes are that bit bigger and they have had no experience of text based programming.  When they get stuck, they get stuck.

We started off the year with the grand idea that we would convert my old spreadsheet quiz unit into a Java based quiz, so we produced a whizzy tutorial website.  However, in practice, it was a bit too high level, and my classes, whilst being keen to do well needed more careful scaffolding to enable them to take their first steps in text based coding.  I was spending lessons running from one problem to the next as I hadn’t helped students develop the resilience to solve issues on their own before calling for me.  Combine this with a new piece of software (Eclipse) with it’s own set of folder management issues with multiple students using the same machines lesson after lesson and I wasn’t able to step back and see the big picture in class.  I needed to tweak the lesson structure to provide more built in support and free me up a bit more to challenge and support where it was actually needed.  The way I did this was though a three step process.

Here’s an example of how I taught loops:

Step 1 – The Human Computer

Five *ahem* “volunteers” were chosen to be the human computer.  Then I brought out the chocolate digestives (lots more volunteers next lesson!).  I set the variable ‘biscuits’ to five and we munched our way through the code below.  Whilst doing so, we discussed how we could code without the loop to achieve the same result.


Step 2 – The Worked Example  

Students were given the code for a program using loops (loosely based on my adventures on the M6 with two small children in the car during the summer hols).


Step 3 – The take away menu.

This, I think, is the best thing we’ve done with this unit.  Nicking an idea from Ross Morrison-McGill (@teachertoolkit), I created a differentiated take away menu of independent tasks for students to apply the skills.  They are graded against the Nando’s spice rating menu, with the spiciest involving skills not taught in class.  Here’s the loops example:


This approach has worked much better, breaking down programming into discrete skills and  giving learners chances to apply and embed as well as a sense of ownership over their independent tasks.

To look at the whole unit, along with fully resourced tutorial website, please visit my Dropbox folder.  All work is licensed under Creative Commons non-commercial, share alike. And enjoy!

Talk to the duck – debugging and resilience

Two of the key aspects of computational thinking are decomposition (breaking a problem or process down into sequential steps ) and debugging (finding & fixing errors in your code).  If you can’t do these things, then programming is going to be very difficult.

However, I can forsee students getting very stuck and very frustrated if I don’t teach them how to think sequentially and give them a toolkit of techniques to try when their program doesn’t work as they want it to.

To help, I’m going to draw on research from prominent educational theorists Bert & Ernie. Student are going to learn the ancient, noble art  of rubber ducking.

Yes, we are buying every member of the dept an actual rubber duck. Yes, we will make the students explain their program to the duck.  Will it work, I don’t know yet, but it will make them think in a computational way, which is half the battle.

So, from September, it looks like my 4Bs resilience list will now read BBBDB.

Go talk to the duck…………

rubber ducky 2

Differentiation and Programming

The most successful ICT lessons I’ve taught over the past 10 years have all shared a couple of attributes.  The first is the idea of ‘freedom within a framework’ – clear success criteria but pupils have a measure of control over the output (topic/theme is the first example that comes to mind) which helps to motivate them.

The second is the very tricky concept of ‘challenge and support’.  This is especially difficult in mixed ability groups where there are potentially no upper or lower ability cutoffs.  I’ve found that whilst I have become quite adept (I think) at supporting the lower end, it is sometimes more difficult for me to plan in the flexibility to allow those students who can to go deeper and further without limiting them or starving them of advice whilst I get others up to speed.  At one hour a week. Phew!

I make heavy use of video tutorials in lesson, (my favourite recording tool is Screencast-O-Matic) as they allow pupils to access my teaching at the relevant point in the lesson for them.  It also stops me from doing a demo at the start, then repeating the demo 30+ times during the lesson as pupils forget/didn’t listen.  They can also pause, rewind and even mute me if they want!

However, the problem with video is embedding the challenge. If you are showing them what to do, what are they thinking? Are they working problems out for themselves or just copying from the screen?  And yet the support has to be there if pupils need it.

So, to scaffold the challenge, here’s the method that I’m adopting when posing coding problems in Scratch:

Step 1 – Show them the pseudo-code

Firstly, learners get the pseudo-code and try to create their code blocks based on it.  If they can’t then they move to step 2.

Step 2 – Code blocks not joined together

Step 2 shows learners a screenshot of all the blocks needed for this piece of code.  However, they are not arranged, so the pupil has to work out how to combine them.

Step 3 – Blocks joined together.

Learners should be encouraged to move away from steps 3 & 4 as soon as they feel able (or a bit before) as it involves less thinking.  However, the support does need to be there, particularly for trickier bits of code.

Step 4 – The video

Usually used when learning how to use Scratch, this shows pupils where the blocks can be found in the program and gives them a voice over to explain the context of the problem.

Worked Example

In this example, we are trying to code a binary to denary converter.   The program needs to ask the user to input at binary number one digit at a time and record their answers to different variables.  This example covers the introduction to the program and the question covering the first digit of the binary number.


when the green flag is clicked

say “Hello! You are going to convert binary to denary.”

wait 2 seconds

say “Please type 1 or 0 for the next few questions.”

say “Is there a one in your binary number? Press 1 for yes or 0 for no” 

wait for answer

set variable ‘Ones‘ to answer

Deconstructed Blocks

Deconstructed Blocks

Constructed Blocks

Arranged Blocks

The video

Finally, the help video – made with Screencast-O-Matic

I’ve just started to adopt this approach with some classes, and I’m finding that they really enjoy the challenge and try to work with as little support as possible.  They are also preparing themselves for more text based coding by engaging with the pseudo-code.  It’s going to take a considerable effort to retro-fit this into my existing Scratch units, but I feel that it will be well worth the work.  How are you going about creating a learning scaffold for your pupils, please leave me a comment to let me know.

This post is directly inspired by the great work done by Phil Bagge (@baggiepr) and the Computing department at Bourne Grammar including Marc Scott (@Coding2Learn). Thanks for sharing gents!

Teaching Computing – But I Can’t Program!

With the imminent arrival of the new computing curriculum, there are LOADS of resources out there to enable our learners to code.  Here are some of the best that I’ve come across, and what key stage I recommend using them at.

Before You Start

Just before that however, if you’re only going to click on 2 links in this post, then make it these two:

Computing At School – Join it. There are loads of CAS members contributing resources and educating teachers (including myself) all over the country. A goldmine.

Primary ICTITT – A site set up by ‘a small group of teachers and teacher educators convened by the DfE’s Teaching Agency and chaired by Bob Harrison’  with resources linked to the requirements of the POS


KS1 – Bee-Bot app – iPad – works just like the physical bee bots. Simple patterns programmed and executed.

KS1 – Daisy the Dinosaur – iPad – Simple introduction to programming covering loops, events and sequences. Drag and drop.

KS1 – How to train your robot – No languages, no computers. A great ‘physical programming’ activity.

KS2 – Hopscotch –  iPad – Visual programming with simple drag & drop blocks. Starts to introduce interactivity, loops & variables.  Nice tutorials too.

KS2/3 –  Python – A text based programming language that lots of schools are adopting for GCSE Computer Science.  To get learners started early, here are some fantastic Python tutorials from the wonderful Phil Bagge @BaggiePR. Click here for the tutorials.

KS2/3 Scratch – My favourite and the spark for some of the best lessons I’ve ever taught!  Drag & drop code that fits together. You can code anything from a simple animation to complex games.  Start by downloading version 1.4 to your computer, then iIntroduce pupils to the Scratch 2.0 online community in Y5/6 and watch them fly. Find some project ideas on my Youtube channel.

KS2/3 – Kodu – 3d Drag and drop programming by Microsoft. Loads of resources available and can also be downloaded for XBox.  @mattbritland (website) & @GeekyNicki (website) are the two Tweeters I look to for advice about this one.

KS3Greenfoot – A half visual, half textual JavaScript coding tool.  I was introduced to this by the rather awesome Neil Brown (@TwistedSQ)from the University of Kent at a computing INSET day that I organised.  I haven’t had a proper chance to play with it yet, but it is bubbling away at the top of my list and looks like a great bridge between Scratch and purely textual languages.  For the moment, here is the project that we worked on on the INSET day and the YouTube channel from the University of Kent.

KS3/4Code Avengers – HTML, CSS and JavaScript with a superhero theme.  I did the HTML project with a mixed ability Y9 group and they loved it. Pupils could instantly see the effect of the changes to the code in the preview window, which worked really well.There were even boys competing to earn the most points in a lesson!  It seems a lot less ‘dry’ than some of the other online programming tutorials around.

I would probably use the HTML at KS3 and the JavaScript at top end KS3 & KS4 at the moment with a view to moving it further down the year groups as they get more coding experience in earlier years.

KS3/4W3Schools – A great site with really comprehensive web coding tutorials covering everything from HTML & CSS to SQL & PHP. Very nice indeed.

KS3/4 – Python

There seem to be more & more online python courses around all the time.  The ones I have used are:

LearnStreet –  Simple interface and chunked lessons. Projects need some experience to jump into.  Nice class creation and pupil/progress tracking metrics. Also does Java & Ruby.

Code Academy – Similar in format to LearnStreet. Simple interface and points for achievements. Covers Python, JavaScript, JQuery, HTML/CSS etc.

Anther great Python resource is:

Invent with Python – free pdf textbooks covering game programming, games with graphics and hacking secret ciphers.

Teachers – Python School is aimed at skilling up teachers for teaching computing to KS3/KS4/A Level.