Very Occasional Articles


A student based Computing curriculum – June 2017
Jobs for humans! – September 2015
Have we got it all horribly wrong? – February 2013
Coding For All? – December 2012

A student based Computing curriculum

I would like to see a general Computing curriculum that is much more child focussed than we currently have. The current UK curriculum is aimed at producing industry ready adults. In my mind, it should be aimed at producing enthused, creative, safe and responsible young people. My curriculum might look something like this:
(CS = Computer Science, DL = Digital Literacy, IT = Information Technology)

KS1 - play based learning about algorithms and how computers in all their forms make our lives easier and more enjoyable - just use them.

KS2 - CS: experiential learning about all the things computers can do for them personally and in society (focussed on what impacts this age group the most); DL: focussed on staying safe online; IT: "you can make stuff too" (Posters, Presentations and Scratch projects).

KS3 - CS: plenty of time reserved for learning and practicing simple Programming (not Scratch) with lots of small, gender neutral contexts; not much else! Although, the programming tasks should involve CS ideas as diverse as messing with RGB values in images, modelling predator-prey relationships, sorting algorithms. This is possible when starter code is provided that helps with accessibility/differentiation and models good practice; DL focussed on staying safe but also responsibilities; finding reliable information in a digital world; IT: main office packages, graphics, sound and video (focussed on good design principles with aspects of appropriate tool choice).

KS4 - General Certificate of some sort:
Core: a programming thread (stick to teaching only one language); DL: more about safety, responsibility and security, the benefits and dangers of big data; finding reliable information in a digital world; IT: general proficiency in Office skills (focus more on excel and databases); learn about how data-driven applications are built;
Option 1: Computer Science - All the "what's in a computer" stuff
Option 2: Creative Computing - Computing in Music, Art, Games, etc.
Option 3: Physical Computing - Making robots, sense and control etc.

My main concern is that we try and cover far too much content at GCSE which means that it is then tempting to provide students at KS3 with a "prepare for GCSE course". This is counter productive as it then puts students off taking the GCSE. It also does not provide the necessary time to become any good at very much because the students have to move on and do a lesson on the next type of input device, etc.

If we teach students how to find reliable information then, with Google in their pockets, there is an awful lot of the current GCSEs that becomes difficult to justify as essential. I would not mind it if future students going into industry hear: "Wow, you were never taught about Boolean Logic in circuits!" if they also hear: "Wow, you have thoroughly researched this and put together a very good case." and "Wow, you are a really quick learner." and "Wow, that is a very creative suggestion."


Jobs for humans!

Humans are funny old things! It is as common now as it has been in all of human history for people to worry about foreigners, immigrants or simply other tribes taking their resources. “We were born here, these shiny rocks are ours!”

This has resulted in wars, racism and even such evils as ethnic cleansing but, strangely, no-one goes on marches to complain about mechanisation:
“Robots out!”
“Jobs for humans!”

I have been thinking about this for a few years now and basically come to the conclusion that the world’s economists and politicians do not seem to be able to imagine a world where it’s citizens do not need to work. In fact, in Britain at the moment, we are madly increasing the retirement age to ensure that there is enough money in the coffers to pay for people who are living longer - ignoring the fact that the actual consequence of this is more and more youth unemployment - which must also be paid for.

I have just watched the latest BBC Panorama episode: Could A Robot Do My Job? Very interesting it was too. Apparently, so far, jobs created by technology, by which they mean robots, automation, computing and AI solutions, far exceed those lost to technology. However, the jobs lost are unskilled jobs and those created are for more skilled and highly educated or creative people. Not everyone can do these new jobs. What is more, we are now in a period of exponential growth in computing power, AI capabilities and general automation. It appears that what is more likely to happen in the future is giant companies owned by a few people raking in billions of dollars with very few staff indeed are going to start dominating society. The very few get very much richer while the many, many poor get even poorer and jobless. I suspect you are thinking: “Hell this is already happening!” Well it is just the beginning - unless we take some action soon.

So what to do? If you are a politician, probably the best advice is to hide your head in the sand until the tipping point - it probably will not happen in the next four years of your tenure. But what if you are a forward thinking politician, possibly one interested in the future of the EU and wanted to make sure that when the crisis comes your society is in a position to cope? Well I think you need to be prepared to think outside the box and way outside your comfort zone: The current economic model that requires continual annual growth, open competition, gambling on stock-markets and nearly full employment isn’t going to cut it for much longer.

I picked an EU politician for a good reason, I could just as easily have picked the USA or China. To break the mould it is going to take a group of people that can economically stand alone in the world.

Here is the crux of the problem as I see it: When I do a job I earn money for myself and my family but I also pay into a pension pot for my future security. In addition my company sometimes contributes to my pension and we both pay vast amounts of tax to support the national infra-structure. When my profit-seeking company replaces me with a robot who can work 24hrs a day it actually replaces me and a colleague. Someone in HR is likely to lose a job too. The company no longer has to provide me with comfort breaks, pay me when I am sick or on holiday or pay any tax on my behalf. The share-holders get richer, and I have to re-skill - if I am capable. What I really would like to do though is set up a studio and paint and get on top of my garden but unfortunately that won’t feed my family. Bloody machines. “Jobs for humans!”

And the solution. Well I will offer some hints but I do not have a degree from the LSE so do not expect my ideas to be watertight. Perhaps one way would be for me to work hard enough until I save up for a machine to replace me. The machine becomes mine and the company has to pay me and my taxes while I build my art studio, socialise and go on holiday every so often. This is a literal solution to a problem and therefore would not even begin to work in the more complex scenario of big IT industries like Google, Instagram, etc. We have to be more imaginative. However, at least we have taken the massive step of rejecting the status quo.

When cars made horses redundant, to rub salt into the horse’s wounds, the power a car engine could deliver was measured in horsepower. What if every robot, software suite, automation process, used by industry had to be assessed and assigned a “humanpower” – an index of some sort that indicates how many humans are replaced by automation. In this scenario, the companies that start up in a bedroom with two people and a laptop and then sell their product for 30 million dollars have to cope with paying vast amounts of tax. This solution would support infra-structure allowing people to work 3 days a week and retire earlier. It also re-distributes wealth more fairly. If I choose not to work, maybe because I was only capable of menial work that a robot can do far more efficiently than me, I do not have to. I have enough money from the state so that I can pursue a hobby, use automated taxis and go on annual holidays, probably in the UK by this time - thanks to global warming.

This second half-baked solution has its challenges: How do we stop people being idle - have more faith in people. How do we ensure we do not stop people being entrepreneurs - have a sliding tax system that cuts in slowly until they have made themselves comfortable rather than obscenely rich. How do we compete in a world where other multi-nationals do not have to pay the humanpower tax? Well this is why solutions need to be dreamt up by visionary independent economic countries or groups of countries. The EU could in this case perhaps stop trading with countries that do not employ the same systems, in the secure knowledge that the countries not coming on board are likely to meet economic crisis pretty soon and that their out of work citizens are going to demand what we have got.

I believe there is a crisis coming our way but that we can solve it. We will have to throw out many assumptions:

   • We cannot change the global economic system.

   • Everyone must work five days a week for most of their lives.

   • It is degrading to be unemployed.

   • Everyone is capable of up-skilling to do jobs that robots cannot do and that there will be enough of these jobs. (Did you know that 50% of the UK population have an IQ of less than 100?!)

   • That we will have to throw out the baby with the bath water - this might not be enough, we might have to throw out the bath as well.

Lets all go on a march:
“Jobs for robots!”
“Leisure for humans!”


Have we got it all horribly wrong?

The National Curriculum framework for consultation is now out:
( national curriculum consultation - framework document.pdf )

It seems to suggest compulsory Computing for Key Stages 1-4. Is this justified, is it sensible or is it simply bandwagoning?

All children are required to do English from an early age – so that they can communicate. Similarly Mathematics is endured by all because although very few will go to University to study maths, it is felt that a certain level of knowledge is required to understand the technological world and function in society. Many children may not enjoy these subjects or the way they are taught but they understand why they must learn them. Compulsory Science comes next: this is slightly harder to justify but is more palatable to a larger audience because it mirrors the natural curiosity of children - it asks "why?" Later, students are introduced to the scientific method that underpins many of the advances of the last two hundred years. It is also a service subject, just like Maths, to the important subjects of engineering, medicine and technology.

Can we justify Computing as a compulsory subject from KS1? At this age most children cannot securely spell, do maths or touch type. The proposed KS1 and KS2 subject content statements appear very ambitious. The majority of children will be trying to achieve these outcomes while lacking the tools to do so. For most kids learning to program, it will feel much like it does for children with dyslexia trying to learn to write. The very real danger is that we will we be teaching them, from an early age, that they are not very good at 'Computers'.

Can we justify Computer Science as a compulsory subject at all? The traditional ICT components (how to use word-processors, the internet, e-safety, etc.) at least provides tools that are going to be important in later life, but these are not what is being called Computer Science. ICT appears to receive only one bullet point out of six in the proposed KS2 content. Should all students be required to "design and write programs that accomplish specific goals"? (bullet point 1 at KS2) Their teachers don't know how to do this because they have never needed to.

By the way, Computing is not a Science in the sense that it does not use the scientific method to advance understanding of the world, neither does it underpin other subjects. It is applied science, applied maths, a technology and it is engineering. There is nothing wrong with any of this – it is only British snobbery that for some reason does not value our engineers and technologists even though, ironically, we built our great nation on these very subjects in the Industrial Revolution. However, this only supports the argument that Maths and real Science should be compulsory.

"But there are computers everywhere. Isn't it essential that all our children understand them completely?" This could be said for cars too! No one is suggesting that we make Car Science compulsory. The internet is similar to the worlds transport network but again no one would suggest we make Transport Science a compulsory subject. The best case to be made for making Computer Science compulsory is the unique thinking skills it asks students apply. It is hard to justify this in terms of a compulsory subject though as there are so many others all vying for time that could make similar claims

Personally, I think that all that is necessary and sensible is that students are given the opportunity to experience and choose Computer Science. In other words I would argue that an entitlement to find out what it is all about should be compulsory. At KS2 children can learn to use Scratch creatively. Bullet point 1 at KS2 from the draft document will need to be changed to something like: "design and create programs using environments like scratch that accomplish surprising outcomes."

Strangely most of the focus has been on the Primary sector and rigorous exams at KS4 and 5. I think the most important Key Stage is 3 and it has hardly been talked about. The Raspberry Pi foundation were inspired to do 'their thing' because of the lack of high quality applicants to University Computer Science courses. This was always going to touch a nerve with Mr Gove who only concerns himself with the most able. In most schools though, we have to meet the needs of all our students, not just the top 10% STEM kids. Google have donated 15000 Raspberry Pis which the Pi foundation are trying to distribute to 'worthy kids' but where are these worthy kids to come from? I believe that introducing text based coding gently in a fun way at KS3 as a small part of the Computing curriculum is the key. At this age the kids will have the necessary cognitive tools, so we can now gently lay the foundations for KS4 and give them the opportunity to know whether they have the aptitude or interest in Computing – before making a choice. I am not sure that it is fair to only give access to those children who are lucky enough to get to a club.

Where then has this mess of a Curriculum come from? Perhaps the pressure groups that saw a problem were too successful in persuading Mr Gove and he has gone too far. Perhaps it is because the curriculum is designed top down to fulfil adult needs:

In reality this approach will put students off Computer Science by KS2 and at KS3 most children will feel they are useless.

Alternatively we could develop the National Curriculum for the benefit of children:

This approach to curriculum design is far more likely to provide opportunity, interest and ultimately high take-up in this new and exciting subject. It might be hard to justify Computer Science as a compulsory subject. It is easy though, to state that all children are entitled to experience Computer Science and some programming before making their GCSE choices.


Coding For All?

As the UK rushes to re-write the ICT curriculum and Mr Gove has decreed that computer programming should be taught to all students, has anyone stopped to consider how big a challenge this might be? Can all students learn to programme? How should it be introduced? How on earth do teachers cope with the vast range of ability of students in each class?

For some years I have been concerned about the lack of good resources for children who might want to learn to code. I therefore wrote some materials for my own children and for my school coding club. Next I sought a publisher for what I hoped would be a book for parents who wanted to help their children learn to code. After Eric Schmidt made some comments and Mr Gove decided that ICT was not fit for purpose, suddenly I found I had a publisher interested but they wanted me to make sure the books were suitable for schools. The problem is that schools teach the whole ability range and not all children are gifted in STEM subjects. My limited experience with my school coding club showed me this only too obviously. In a club it was easy to solve by asking the fast children to help the slower students.

Classroom teaching though, presents us with a few major problems. In secondary schools in the UK many students have never tried programming at all. They still have to build a bank of experiences before they can really learn much. A few children in each class have written code before and consequently can fly through new concepts and projects. This is demoralising for students who are starting out as, just like in art lessons, everyone can clearly see that some children are far better than others. How do we convince the youngsters that they can catch up? Can they catch up? How do we teach programming in any case? Do we teach it like maths: this is a 'for loop', now construct 10 more?

There is another major problem as I see it, and that is that many programmers seem to believe that because they learnt on their own by typing out other people's code that anyone can learn that way. If this were the case, there would be far more children taking coding up as a hobby. I believe that there are very few people who can learn like this and that those that can could have learnt to write code a lot more efficiently if they had been taught systematically – well I would wouldn't I, being a teacher?

So let's assume that children are better off being taught. The next question is how? I have ruled out just giving them some Pong code and saying play with that. Sorry to all those people who propose this method! On the other hand if we try and teach it like maths it could become a very dry subject, when the children's expectation is that they will all be making apps and games etc. Ideally we could instead lead them through a carefully selected set of useful applications that are fun and that introduce programming principles in a logical sequence. Coding is so unforgiving of mistakes we have to address this. One way to do it is to use Scratch. This will introduce coding concepts and encourage the correct sort of thinking skills but it will eventually become frustrating as typing is so much faster. Just like every other programming language, Scratch is not appropriate for all tasks and at some stage we have to teach something else. Currently in KS3, Scratch is probably appropriate for most students in Year 7 as they have missed out at Junior School but ultimately, in my opinion, Junior School is where Scratch should be used and in Secondary lessons we should move on to teaching a typed language; as long as we are clear this does not rule out visual tools such as the excellent Greenfoot for example.

Teachers report that some students seem to "get programming" and other students find it very difficult. Indeed, there is research that backs this up
( ) which talks about the double hump phenomenon. To over-simplify horrendously, when teaching and testing a topic, most subjects produce a norm-referenced graph of pupil achievement. Programming on the other hand produces a double hump. That is, students either "get it" and fly or do not understand it at all. This raises the question, should we be teaching programming to the masses at all? It should be noted that this research focuses on University students who received no formal programming education when young. One possible hypothesis is that this phenomenon is due to the total lack of experiential learning that most students get to draw on in other subjects. I hope that if similar students were exposed to programming paradigms in their formative years this would not be the case. Seen from this point of view it would seem it is our duty to teach programming as early as possible.

This still leaves us with the twin problems of how to teach coding and how to produce material that enables wide ranging differentiation. I have been struggling with this for quite a while and have eventually returned to my original idea that students would learn best with a mentor (originally a parent). I have adopted the cognitive apprenticeship learning model. Therefore my books try to show students good practice through carefully chosen fun apps. The teacher is on hand to help with difficulties and hopefully other classmates are allowed to help each other and share their knowledge. The students who have never programmed before get to copy short snippets of code, do small experiments and customise apps by changing variable values. In other words they start to build a bank of experiences they can draw on later. I then provide ideas, puzzles and challenges that students can try – ranging from easy to more challenging. Hence the more able students have plenty of opportunity to extend their learning by applying their knowledge in new areas. The key, I believe, is to develop materials that regularly start afresh and provide plenty of extension ideas so that no one gets left behind, but every student has something valuable and enjoyable to do at whatever stage they are currently at.

This may all seem pretty obvious in hind sight, but what about development through the years? Good programmers get better and better as they solve problems. Instead of looking to maths for a system I have decided to borrow from language teaching. We all eventually learn to read English, which is probably much harder than programming in many respects, and we do this with reading schemes and graded novels. Finally I have a system that I think can work for schools. Hence I have produced a series of very short graded books that eventually build into a reading scheme but for coding. When students are comfortable with projects in level 1 books they can move on to level 2 books. Add in some encouraging assessments that give teachers detailed feedback and motivating certificates for the students with merit and distinction awards and we may well be getting somewhere.




Python Basics:

Python Programming Art:

Python: Next Steps:

Python: Interactive Adventures:

Python: Building Big Apps:

Black Flag:

Other Info:

Quick Index

© in the Site, Chris Roffey 2012
© in extracts from Python Basics, Cambridge University Press 2012
© in extracts from Python Next Steps, Cambridge University Press 2013
© in the characters derived from Python Basics. Cambridge University Press 2012
© in the characters derived from Python Next Steps. Cambridge University Press 2013
© in the characters derived from Python Building Big Apps. Cambridge University Press 2013
© in the characters derived from Python Programming Art. Cambridge University Press 2014
© in the characters derived from Python Interactive Adventures. Cambridge University Press 2016