Simon Peyton Jones on Teaching Computer Science to Kids with the Computing At School Initiative
Bio Simon Peyton Jones is a Principal Researcher at the MS Research Lab in Cambridge, and a visiting professor at Glasgow University. His research interest is in the design and implementation of functional programming languages (Haskell, GHC) . He is Chair of the UK Computing at School Working Group, whose goal is to put the excitement and rigour of computing science back into the school curriculum.
Software is changing the world; QCon aims to empower software development by facilitating the spread of knowledge and innovation in the enterprise software development community; to achieve this, QCon is organized as a practitioner-driven conference designed for people influencing innovation in their teams: team leads, architects, project managers, engineering directors.
1. I’m here at QCon London with Simon Peyton Jones. Simon, we know a lot about you being the co-creator of Haskell, also about your implementation of the compiler, one of the most used compilers in Haskell. So, can you tell us a bit about that and then about your new project that I heard about, not directly related to that, but rather related to education?
I’m not going to tell you anything about Haskell today, today is education. I came to QCon to give a talk about the computing at school project, that’s what's really in my head today. So, what is it about? It’s a project aimed at fixing Britain’s ICT education problem. So, what’s the problem? We teach our kids from age six onwards this subject called "information and communication technology" which over time has turned out to be all about how to use computer systems, at its worst how to use Microsoft Office, no more than that, at its best quite creative and interesting and purposeful uses of computer systems, but what we have lost track of at all is the idea of computing or computer science as a discipline that you might think of in the same way that you think of maths or physics. So, computer science is now an established discipline at universities, but most people, if you ask a head teacher or a parent or a school governor or indeed a student and say “what’s computer science?”, they’d say “that’s something that male socially-challenged geeks might study at university if they wanted to.” The idea of computer science as a discipline that you might study in the same way that you study science from early on at school is completely new, but it lies at the heart I think of how we can fix our education system, because what’s happened is that because we teach only how to use computers in sometimes quite basic ways it comes over to our kids as very boring, partly because they think they know it, sometimes they don’t know as much as they think they know, but they feel bored by it and indeed I think we are missing out on the discipline part which is actually where a lot of the excitement lives. Moreover, the discipline doesn’t date quickly, Newton’s laws haven’t changed very much in the last three or four hundred years, and a computer science treated as a discipline is not changing that fast, a computer science curriculum would be recognizable in ten years’ time. So, the goal of CAS, the Computing At School Working Group, has been to address this deficit in Britain's school education, high school education and primary school education by trying to identify computer science as a clearly understood subject discipline in the same way that you might think of any other subject and to do that we have to articulate what that is.
So, what is computing science as a school subject.
Sadek's full question: Right. And before we try to discover what exactly computer science as a discipline is, what did go wrong? It seems like computer science started as computer science and as a discipline in the very beginning, right? It was a lot of challenges and then suddenly we started having concrete technologies, like as you said, like Microsoft Office and other technologies and that’s maybe when it started drifting away and it even got worse with industry pushing hard into getting people to learn very specific technologies or very specific applications to that. So, is it an old problem or is it a new problem?
I think it’s a problem that’s developed over the last two decades and for quite well intentioned reasons. Initially, when computers first appeared in schools, there was the BBC Micro and the ZX Spectrum and many people at QCon will recognize those things in the schools that they went to. And they were computers that were so basic, they were kind of home microcomputers, all you could do was program them. And so kids immediately got on there and they started writing code, because it was all they could do. Then along came the IBM PC and computers started to be useful in the work place, and useful for writing essays, and useful for helping to learn other subjects as well, and then for quite good reasons people thought “well, maybe kids need to learn those skills” and gradually the focus shifted, when we were learning how to program computers there was a computer studies GCSE, but it wasn’t I think underpinned by the sense of a discipline there, it was “oh, kids are doing all this programming stuff at school, we need to have a GCSE about it”, so it lacked an educational story justification if you like, then we moved gradually and as you were saying with some encouragement from employers towards developing skills and office tools, and they are indeed useful. So, I don’t want to rubbish the existing ICT provision completely at all, because some of it is good and indeed it is useful, we just lost a very important piece.
So, I think it will surface as programming particularly at the early stages. Let me take an analogy: programming is to computer science as lab work is to physics. Now, you would never dream of teaching a child physics by turning him loose in a physics lab with inclined planes and ball bearings and stop watches and say “learn physics”, you would teach them some physics, some of the principles that underlie it and then you would bring them to life and enliven them in a creative way by giving them lab work to understand what’s going on. Now, of course, computing science is a bit different because it is more of a constructed subject rather than learning about the world around us, but the same applies. If you just teach a kid to program without trying to think what is the computer science, what is the algorithm or the data structure or the computational thinking or the ideas of abstraction that I am trying to learn here, you just focus on where should the semicolons go, then you get quite a hook because it is quite motivating programming, but you don’t get I think as much lasting benefit as you do if you say “alright, that’s our practical work, what have we learnt?”.
I think you can introduce the concept of an algorithm, for example. Algorithm is a word that I think that many primary school teachers would find a bit scary, but of course we know that algorithm is something very simple, a sequence of steps to accomplish a given task. And already there are things like there might be more than one algorithm to accomplish the same task and different algorithms might have different tradeoffs, and some algorithms can be very clever. There is a wonderful web site and resource book authored mainly by a guy called Tim Bell in New Zealand called Computer Science Unplugged, I love it particularly because as its name implies it teaches computer science to primary school children without using computers at all. So, we are completely decoupled from the technology and that’s a very strong idea, we want to be uncoupled from the technology, so we are not trying to teach people about technology, we are trying to teach people about ideas. One video that I showed in my talk today was about sorting networks and it shows how if you take primary school children and you draw on the playground little squares with arrows between them and when two children meet in a square, they are holding numbers, they swap places if one’s got a bigger number than the other, otherwise they don’t and then they walk through the sorting network and they start off unsorted and then they come out the other end they are sorted, and you think you can do this no matter how young you were and you could not but be intrigued by that, why is it that no matter how you place the children initially, they come out 1, 2, 3, 4, 5, 6? Could you do that with fewer boxes and wires, how could you sort more numbers, does it always work? Some of those questions of course have quite advanced answers, but what I like about the example is that it is clearly not technologically connected, it clearly has interesting, sort of intellectual thrill, but at the same time it is something that you can do with kids of six or eight.
5. Very interesting, but these exercises, like the one that you just mentioned, you think there are a lot of them, are there people working to create these exercises, that are very easy to implement, very useful?
Sure, absolutely. The Cs4fn site has literally dozens, I mean CS Unplugged. Cs4fn is a website run out of Queen Mary and Westfield College here in London, which is full of computer science often taught through magic tricks, they show you a magic trick and it works by some computational mechanism, it’s not sleight of hand or anything, and they also produce a magazine that comes out once a term and they send it out to a lot of schools. So, there is a lot of material now aimed at kids of varying ages, but the point is including primary age, so it’s the educational argument I think is at its strongest when you say “I think this is foundational discipline we must work hard at teaching it to young children as well”. Which is not to say problem solved, I think pedagogy for real subject disciplines is not a static thing, the mathematicians are still thinking “how do we teach maths to six year olds?”, and of course it surfaces in maths in elementary ways like “let’s learn arithmetic” and so for computer science it’s likely to surface, as well as the kind of thing I told you will surface in the form of programming. Many primary schools are already doing Scratch and they have floor turtles which they program using Logo and it’s very motivating to see how can you make the physical floor turtle draw a square or draw several squares or draw a house. It’s very motivating. As long as you got the intellectual underpinnings that say what we are trying to do is: we are trying to learn this subject discipline in the same way that when we teach arithmetic, you say “I am really learning mathematics”.
This is a big change, because as I said computer science in everybody’s minds has been thought of as university only. So, we are talking not just A level, not just GCSE, not just key stage two, so this is very big. So, several things have happened, the last year we’ve seen a lot of change, the Department for Education has been running a review of the entire national curriculum, and the Department for Education two years ago had not heard of computer science, but now they understand it and believe that this is in fact, a strand of computer science alongside continuing, let’s not throw the baby out with the bath water, alongside, some information and communication technology and digital literacy taught in a balanced way belongs in our curriculum and I was involved in the working party that wrote this. So, this is the draft program of study, that is curriculum, for computing, the subject is likely to get a new title, no longer information and communication technology, it will be called computing, key stages 1-4, that means age six to sixteen, very short, this is only three or four sides of A4, so this is subject to public consultation at the moment, but the final version will come into force in September 2014, next year. At that stage, all schools will have to pay attention to it, I don’t mean all schools, all state funded schools that are not academies in Britain. But, nevertheless, even academies will pay attention to what this is.
Sadek: Will they start following?
It’s very different to get that happening on the ground in many schools, particularly primary schools, for which much of this will be scary. So, we need to have and that’s really why I am here at QCon this year, we need to have a national program of supporting and affirming and training our existing ICT teachers, not telling them they are crap at teaching ICT, they are deeply and powerfully motivated to work for their kids and they are doing a pretty good job actually, but they don’t know much computer science, I believe many of them want to do this kind of stuff but they need some help, they need support from people who say “we’ll help you over that fear factor, we know computer science, we are scared of kids”. In front of the QCon audience I was saying “oh, a class full of eight year olds, that seems scary to us”, but remember for the teacher that is not at all scary, but algorithms, that’s a bit scary. So, I think by putting us together as a subject discipline group, as a group of professionals we can really make a difference.
We need a lot of budget, well, we need some. In the olden days we’d have waited for the Department for Education to launch a major national strategy for computing with a £10 million program over two years, and all sorts of bells and whistles, maybe more than that. That’s not going to happen these days, in some ways I think it’s a good think, basically it’s up to us, we CAS, the Computing At School Working Group encourage universities to put on courses for the local teachers, we have managed to persuade the Department for Education to give us a modest sum of money, they’ve given us £150,000 for the first six months and we are hopeful that they will come up with a larger sum of money, something like £3,500,000 over five years, that will be enough to core fund a few posts, a very few posts, like three or four plus a lot of master teachers, that means real teachers seconded for half a day a week to help train their colleagues in other schools, and if we can have layer upon layer of master teachers doing that, I think that gives us a change to scale. So, we do need some money, I believe that the Department for Education is favorably inclined; I am hoping they will actually come up with it, but it’s not going to be big bucks. We, the professional community, are going to need to essentially take every pound of government money and turn it into £50 worth of support and enthusiasm and excitement and encouragement for ICT teachers.
Yes. Every developed country is grappling with exactly the same issues. The particularities of it are different in every country because their educational systems are different in a million tiny ways. So, to take the States for example, they are mired in difficulty because the federal government is not allowed to make educational policy, they cannot produce a national curriculum like this, the federal government is forbidden from doing so, the states can but the school districts can ignore it, there are thousands of school districts, so it’s very difficult to move the needle at national level at all. So, they are drooling over the progress that we have managed to make here in the UK on this. Other European countries, Switzerland is also quite decentralized like the States, I was at a conference there and they are again quite excited about this and again working hard in their community to achieve the same kind of effects, Estonia is introducing programming at school level, France has. Every country has movement in this direction happening in different ways, but I think we Britain have now moved from the stasis in which we were stuck in a single way of doing things for a decade or so, and we have now leapfrogged into the lead, I think other countries are looking to us to see how well it works out. That’s another reason that I am so keen to make it work out well, which is why I am keen to engage IT professionals in helping doing that and why we are having this conversation.
Yes, I think they should be as fluent. People find maths hard, people are going to find computing hard, by calling it a discipline we are sort of saying “this is not an easy subject, it’s something you have to think about” and some kids will take to it more than others, some will become the geeks of the future, I use that in a complementary way, some will learn a bit and will decide “it’s not for me” just like I learnt a bit of Latin and I decided I didn’t want to do any more, but I am still glad I learnt a bit, I think it’s the same for many people, but I think that it will help every adult to have some knowledge of the digital world that they live in, some sense of empowerment, some way of making rational choices when somebody says “what is happening when this security stuff is happening or I’m typing in passwords or I’m sending my credit card details”, they all have that kind of stuff and privacy online and all these things.
That’s right, elementary and indeed the world is increasingly programmable as well, so even if it’s writing rules for your outlook message processing, you’re just writing a little program, when you’re writing formulae for a spreadsheet, you’re really doing programming, once you’ve learnt three or four languages, you suddenly see programming everywhere and you think “oh, I could use the intellectual tools that I have gained about programming in all these new contexts”.
Sadek's full question: And even like that could solve big problems that we have today in the industry, because wide majority I guess, it is my own observation you can contest it completely, developers are very weak at the fundamentals and the discipline. They do some programming, they can solve some tasks, when they get to anything a bit sophisticated they lack basics, and this could solve that as well. Because programming has been a bit, programming language- this is how it works and this is how you do it, this might solve that problem. So, we can expect maybe next generations to be much better at computer science than this generation is, maybe?
I hope so. There are an awful lot of smart people who are in professional engineering jobs these days, wouldn’t want to slag them off.
Sadek: It might ease the discovery of new, because some people don’t even have the opportunity to understand what this discipline is and get into it.
Yes, that’s right. I think there is the true geeks are going to get there anyway, in spite of the educational system, but I wanted it to be because of the educational system rather than in spite of it. And I want the next stratum down who are currently being put off, and this includes girls actually, so women are very underrepresented in computer science, if we can get them hooked at primary school I think that’s a real way in to sort of maintaining them, so the on-ramp is much more smooth and hopefully we may be able to increase the representation of women in our discipline a lot by that as well. There is a whole bunch of people who are put off at the moment and they could be really good at it and that seems such a shame to lose that potential.
What can they do? Good question. One thing is join the Computing At School Working Group. So, the Computing At School Working Group is a bunch of individuals, mostly in the UK, but some abroad as well, aimed at fixing this exact problem. So, CAS was started in 2007 with four people, we now have 3,500 members, people are joining at a rate of 400 a month, so it’s a very exciting, sort of fizzing group of individuals who want to fix this, about two thirds school teachers but it’s very important to have a lot of IT professionals and software developers involved as well. So, what does joining CAS mean? It’s free, it’s embodied, so you do actually have to join because on the online forums and things we don’t want spam bots and we want people to be operating under their real names with real places on the map, because we are people, this isn’t a kind of avatar based discussion forum, so you do actually have to join, but you don’t get any spam, unless you want it, so no email, there are lots of resources which you may be able to help with and you get your finger on the pulse of what teachers are doing. So, that’s the first thing to do, just because that gets your finger on the pulse. And hold up, this is the CAS newsletter, which is produced, newsletters [usually] make me lose the will to live, they are for worthy causes but they are very dull, this is full of excitement, it’s written by teachers for teachers and it’s actually quite a thrill to read and it’s on the CAS Outward-Facing site.
Your watchers can find a way to CAS just by type computing at school into a search engine and you get to CAS first thing. Then there is a join CAS button and you need to do that, to get access to the online community. So, that gives you access to the people and the buzz, in more concrete terms, what colleagues listening to this can't do is just wait for somebody to tell them what to do. CAS is a bunch of volunteers; we don’t have a headquarters with a pyramid of people sending command and control instructions down the tree to the leaves, all the intelligence is at the leaves, so people listening to this, join CAS and look around, and there is a map so you can find out who is near you, if you can’t find out who is near you, then get in touch with me or Simon Humphreys, that will clear once you get online, and we will put you in touch with some local people. And you just have to think “what could I do locally?” and that might be something like if you’ve got kids at school talk to your ICT teacher, have they even heard of CAS, have they even heard of the changes in the curriculum system, what do they think about it, are they feeling excited or are they feeling vulnerable, so have a dialogue. I don’t mean to sort of dump something on them, just a two way conversation, preferably get alongside your teacher and then go with them to the head teacher or to the chair of governors or the governors of the school to say “shouldn’t we be making a strategic move to introduce more computing into our school because this is a change?” How are we going to find training, maybe get together with some other software professionals to offer training locally, maybe particularly at primary, it’s easy to think only in terms of secondary school, but primary school is a big issue. Primary teachers are often working from zero in this area, they have no computing background and they are scared, rightly “oh, I’ve got to teach algorithms, what does that mean?”, so they need somebody they can talk to about how they can do that in a supportive way.
So, if you are a parent of child at primary school talk to your head teacher and then to your teacher about how to help them over this sort of fear factor hump, maybe even you could go into a class with the teacher and, say, take some material from CAS online or from CS Unplugged and say “let’s do some lessons together, I’m scared of your kids, you’re scared of the computer science, together we are not scared at all”, do you see what I mean? So, you have to be proactive, don’t just sit there and wait, just do something.
Sadek: Well, thank you, Simon, for all this work and for being here for an interview.
There you go, it’s just the most exciting thing that’s happened to me in the last five years, it’s amazing. It’s almost as exciting as functional programming and Haskell. And that’s saying a lot, I should say. Actually it’s just as exciting, but this is the year, don’t hang around, this is the year, in five years’ time it will either be done or not. Don’t hang around.