Code Club Is Programming Tuition For Primary Schools

By Jim Rossignol on September 12th, 2012 at 7:00 pm.

Robots!
Programming hasn’t really been taught well in UK schools, and that seems like an oversight, particularly when such a vast segment of getting on in the modern world can actually end up being about making computers do things. Hell, as someone who dabbles in both website publishing and development, I know just how useful programming is, how important that makes programmers as individuals, and how helpless I feel when I can’t tackle a programming problem. These skills make robots work, make the internet a thing, and make our precious games crackle with magic fire. So Code Club, an attempt to get after-school coding clubs into UK primary schools (for the 9-11 age group) is something I – and the rest of RPS – wholeheartedly support. This is the lowdown: “Code Club works by connecting programmers with their local schools and providing them with a set of projects to teach for an hour a week in an after-school club setting.”

I post this because I wish I had learned programming when I was a child. Read my quick chat with organiser Clare Sutcliffe, as well as a video overview of the project, below.

RPS: Why do kids need to learn to code at such a young age?

Sutcliffe: There are some really valuable lessons to be learnt from programming. Children learn how to solve problems and how to break complex projects into smaller more manageable tasks.
It’s also about teaching children that they have the power to change the environment around them by designing the programmes they use for themselves.

RPS: That makes sense. I mean, much of our contemporary environment seems to consist in screens… But why don’t schools already teach programming?

Sutcliffe: Technology moves very quickly so it’s very difficult for governments to keep their curriculum up to date. Even so, the UK government has been particularly slow in responding to the pace of change. Apparently there is new curriculum being planned that include programming but this isn’t due for a year or so.

RPS: What can RPS readers do to get kids learning code?

Sutcliffe: Well they can get as many schools involved with Code Club as possible by telling them about it and pointing them in the direction of the code club website www.codeclub.org.uk If RPS readers would like to volunteer at their local school they can find out more information on the volunteers page of our website.

RPS: What can code-illiterate parents do to help kids learn coding at home?

Sutcliffe: They can introduce them to Scratch. It’s a great place to start learning the basic concepts without having to write any syntax. There are also some other great resources such as Mozilla’s webmaker series including thimble, Khan Academy, Codecademy. These will guide you though coding exercises.

If you are a gaming parent, you should support it too. Hell, they’re looking for volunteers to help out with the clubs in schools around the country. The website with all the details is here.

__________________

« | »

.

48 Comments »

  1. Theogrim says:

    I too wish I had an early start in programming. Higher education wasn’t a great help either. Also, with the recession, local businesses aren’t offering internships or junior positions either.

    So now I repair laptops/PCs/phones for a living,

    • slight says:

      You know there’s no reason why you can’t self teach yourself up to a basic level. One great thing about coding is that apart from large companies, whose HR departments will filter by degree and demand unrealistic amounts of experience, most coders are self taught. That does mean that you have to be careful to learn about good practice though. Web development (PHP/Ruby/Python/Javascript, not so much HTML and CSS) can be a good entry point though it can be easy to get stuck with lower level stuff. One thing I would really really strongly recommend is start learning a second language as early as possible, don’t get yourself boxed into just one. The longer you leave starting a second language the more work it will seem to be until your level of competence can approach that of your first language. In terms of good practice there are two rules I cant stress highly enough. One, document as you go (comments inside functions/methods, and function/class descriptions), and two, do *not* let anyone persuade you that writing code that’s either terse or /apparently/ efficient is more important than code that is logically arranged and easy for someone else to understand (this is called premature optimisation and is a common trap for beginner and not so beginner programmers)

      • Theogrim says:

        I’ve self-taught myself C#, HLSL, HTML, CSS, and PHP (we were only taught VB 6.0 in college which was already being phased out) but there’s only so much you can teach yourself before you need guidance.

        I’m just angry at my younger self for not knowing that I wanted to do programming specifically and shot for general IT to keep my options open. :P Maybe if i’d been able to try it earlier in life I would have made more solid decisions when choosing college courses.

        • slight says:

          You probably wont see this but just in case… Really the point I wanted to make is that, cliche alert, it’s never too late to start. Of course the reality of a possible drop of income moving to a junior role may make that practically difficult, but it shouldnt be impossible.

    • Zern says:

      If you are looking for some small, self contained problems for practice, I’d recommend looking at some of the easier problems from Google Code Jam:
      http://code.google.com/codejam/
      These can be solved in any language. I also second the notion of not limiting yourself to any particular language. Once you are comfortable in any imperative programming language, moving to another will not be a big deal, since many of the concepts will already be familiar.

  2. wccrawford says:

    I was lucky enough to be taught to program at age 9 or so. It has shaped my entire life and most definitely improved it. Not everyone will have that experience, but they should be given the chance.

    I believe this about other things, too, such as writing and art. Kids should be introduced to many different skills and encouraged to find one that they really enjoy.

    I also agree with using Scratch. The other day, my niece told me what she had been playing with Scratch, and started going into how she knew what was wrong with other kids’ programs, and how she’d fix them. I was so freaking proud.

    • Toberoth says:

      <3

    • slight says:

      That’s awesome :D

    • frightlever says:

      I’ve been looking into something to introduce my niece to coding and have tried out Scratch, but I also looked at Construct 2 – which is an events based system which is a little more complicated but worth a look. There’s a free version which exports to HTML5 and pricey Personal and Business editions which will apparently be able to export to PC/iOS etc etc apps.

  3. Byron_Black says:

    My honors dissertation project was pretty much this, 20k words later and I can happly never look at scratch again.

    • Pie21 says:

      Do you know about any alternatives that do similar things and are better? I’m quite interested in this whole movement, if you can call it that, both to encourage kids to at least experience programming, and to help protect the field against the worrying trend towards closed systems and disconnected consumers.

  4. Hoaxfish says:

    Without giving too much away, I work in a primary school though as tech support, and with the changes in the ideals of the subject in the UK (from “secretary work” like MS Word to Raspberry Pis and coding) the whole “ICT” subject is in trouble. Most of the teachers who teach the subject are not particularly literate or interested in the subject.

    While I think the ICT teacher at my school is very enthusiastic, his interests are much more grounded in music (even though he doesn’t teach that subject). I’ve seen him get the keyboard keys wrong, the basic understanding of gifs wrong, (and he’s a full-time member of the Apple cult), etc

    He’s open to the idea of new things, but I’ve yet to find something that he’d actually find easy to understand himself and easy to actually teach.

    Teaching resources like actual lesson plans etc are the real things needed to move it forward.

    In my current job, I’m pretty lucky. In the case of other schools where I’ve worked, the very idea of a teacher being interested in the subject they teach is almost completely alien (instead of just an extra lump of money to be the subject “co-ordinator”). I feel the real problem with teaching the subject in the poorer/government schools will very much lie with the staff teaching it, at least until a decent curriculum is formed around “computers” as something more than glorified typewriters.

    I have yet to see an ICT lesson which deals with concepts like short-cut combos, or why the monitor is not always the PC (or at least why turning the monitor off is not actually turning the PC off). You know, actual useful computer knowledge.

    A lot of the “new things” for the subject are viewed as Secondary School (12+) concepts, though I think a lot of that is due to unfamiliarity with the subject or possibilities. Or worse, people flushing the budget on iPads for every child (only to have them “go missing” soon after).

    • Gap Gen says:

      I suspect that it’s difficult to find enough people who are genuinely talented at computing who also want to teach, rather than using their incredibly marketable skills in industry. This is a problem across the sciences too, I gather. Unsure how to fix it, short of paying teachers more, which isn’t going to happen.

      • Hoaxfish says:

        I think at primary level the issues are reduced, since anyone who has passed through secondary school has basically had enough understanding to teach the stuff at primary level.

        The new ICT is basically a new subject, where as something like science or maths has had years of curriculum tweaking.

        If I remember correctly, the government basically proclaimed that what was taught in the new ICT was basically up to the teacher… which is frankly bizarre compared to how tightly controlled (and tested) every other subject is.

        For an enthusiastic teacher this is a blessing, giving them free reign to build a lesson around the children’s abilities.

        The middle-ground, a teacher who is able to teach but is unfamiliar with the subject is in with the worse group, since there is no “proven” guidance.

        The worst teachers, are going to be the worst anyway, but without a real curriculum a student or parent can’t attempt to bypass the ineptitude and go straight to the source (or at least for formalised lesson plans… they can obviously go right down to the root, and find basic untailored lessons on the internet or something).

    • LionsPhil says:

      Yeah. Everything below University level is completely useless for “programming”.

      It’s arguably useful as a more vocational background for general office work, though. It turns out everyone does need to know how to drive a word processor.

      • Hoaxfish says:

        I think there’s a bit of weird split going on.

        The old ICT is rated up along side Maths and English, as the subjects all pupils need. (Read, write, calculate basic numbers, and type letters, email, research on wikipedia)

        The change puts it in conflict with that view… coding, etc is much closer to Design&Tech/Woodwork/Cooking (not everyone really needs it). Much like learning to walk, and being an Olympic sprinter. Along with those other subjects, it does kind of become a form of “bite-sizing” training. You learn the different ways of how to you can plan, write instructions, and follow them. What you apply those skills to is a bit more abstract.

        The real basics of the ICT subject (turning computer on, using a mouse) get taught from 3+ (starting with basic child-friendly paint programs), so most children know how to use Word, or logging in, by the tail-end of primary. Secondary onwards seems to repeat the whole thing, which is mostly what the changes are targeted at (and thus Primary is targeted at getting you ready for Secondary, so coding concepts “might” up at the tail-end).

      • Greggh says:

        Yeah, and most office work also involves a lot of computer systems, sometimes very complex ones, so even the smallest background in programming can give a competitive advantage. Or so I believe.

    • Yosharian says:

      “In my current job, I’m pretty lucky. In the case of other schools where I’ve worked, the very idea of a teacher being interested in the subject they teach is almost completely alien (instead of just an extra lump of money to be the subject “co-ordinator”). I feel the real problem with teaching the subject in the poorer/government schools will very much lie with the staff teaching it, at least until a decent curriculum is formed around “computers” as something more than glorified typewriters.”

      I disagree entirely. If staff were under less pressure to perform in the main three subjects, perhaps they’d have the time, space and sanity to get interested in actual teaching.

      “I have yet to see an ICT lesson which deals with concepts like short-cut combos, or why the monitor is not always the PC (or at least why turning the monitor off is not actually turning the PC off). You know, actual useful computer knowledge.

      A lot of the “new things” for the subject are viewed as Secondary School (12+) concepts, though I think a lot of that is due to unfamiliarity with the subject or possibilities. Or worse, people flushing the budget on iPads for every child (only to have them “go missing” soon after).”

      I teach all those things in my ICT lessons, although I’d agree that most wouldn’t bother. The bottom line is you have to look at VALUE. Schools assign no value to this. If I teach my entire class of Year 4s how to use shortcut keys, know what a monitor is, whatever; this has no value to the school. Nobody cares. If I put in extra effort with my Maths and Literacy that year and get better results, I get pats on the back from management, a chance at improved pay, and frankly I get to keep my job another year.

      Oh yeah, and as for the iPad thing – my old school just bought 15-20 laptops and in turn, scrapped an entire suite of desktop PCs. And that school was POOR. I’m talking about, these some of these desktop PCs were running less than 500 MB of RAM. My class computer was running on around 600-700 MB of RAM, can’t remember exactly. I tried to tell them it was a bad idea, but again – management won’t listen.

  5. InternetBatman says:

    Netlogo is also a great tool to start programming if anyone is interested.

  6. Tei says:

    Probably was easier for kids to learn how to program at the 80′s, since the machines where so simple, a children can understand all of it. A cpu like the 6502 is not hard at all to understand.

    Now probably the problem is that theres too much things, and most programmers don’t know what are doing, even professional programmers. Odds are most Java programmers have never looked at a native assembler version of his programs, so literally don’t know what are doing. Theres a lot of editors ( vi or emacs), choosing the tools is dificults. And even if you choose a tool, is much more fun to play videogames, than to try to write some code.

    The right mindset about programming is that everything give XP points. Start somewhere, and continue, you will always be learning something, even wen you are doing it wrong, you will be learning something valuable for… well.. .more programming. Programming is like a self-perpetuating thing.

    • Gap Gen says:

      I’d be very surprised if there’s someone on the planet who knows everything about their computer, right from the Java code used to write the applications right down to the layout of the chips. Maybe someone at Intel can make a good stab at it, but even then they’re going to specialise. So not knowing how the Java VM works isn’t such a bad thing, I guess.

    • ChrisGWaine says:

      It might be harder to learn the instruction set of every component of a machine now and code the most basic interfaces, but when it comes to actually get interesting, worthwhile things done, I’d say it’s much easier to learn to program now, with modern languages, modern tools, modern resources for learning and getting help, etc.

      • Gap Gen says:

        Oh yeah, Fortran 77 is garbage. Fortran 90 slightly less so. Fortran 2003 even has OO, although not quite, which is kinda cute.

        • Brosepholis says:

          If C is a knife, then Fortran is a rusty knife. And C++ is a swiss army knife.

        • Gap Gen says:

          C++ is the Swiss army knife where you don’t even know what half the blades do, and you’re constantly cutting your own fingers off.

          • LionsPhil says:

            Once you know what the blades are for, though, and the rare cases in which they should be used, it’s the most flexible and powerful tool you could ask for.

            Mmm…multiparadigmatic strongly-typed/type-inferenced highly optimizable metaprogramming languages…

            Also, if you’re not doing RAII, you’re not doing OO. And if you’re writing “finally” blocks, you’re doing “ON ERROR GOTO”. Shame on you, Java.

          • Brosepholis says:

            I only use the corkscrew on my swiss army knife anyway. How often do you actually need to saw through a thin branch?

          • Gap Gen says:

            My favourite thing is writing copy constructors all the time, I guess.

            Man, this is a sad comments thread. Sorry, RPS.

          • Kaira- says:

            How did that one quote go… “it’s easy to shoot youself on the foot with C. It’s a bit harder with C++ but when you do, you blow the whole leg right off.”

            That being said, C++ is like fine wine, gets better as it gets older. The new features in C++11 are fantastic.

    • slight says:

      I think it’s a fallacy to suggest that if you write assembly it’s somehow purer than working in a higher level language to be honest. Obviously it’s closer to the metal, well it’s “on” the metal, but most of the concepts are the same even though there are different levels of abstraction. A chip designer could make the same argument about someone writing assembly, “fine you say push this here, but you dont understand how that’s actually done”. The important things are really understanding how to decompose a problem and build a flexible, efficient and maintainable/extensible system to do what you need done.

      I do agree that when you’re coding on top of a complex modern OS it’s going to take you longer to understand how all the layers of abstraction your code is sitting on interact down to the lowest levels but I think that with the right teacher that doesn’t have to be a problem. As others have pointed of course there are probably a limited number of teachers that fit the bill, but likewise how many people have ever been able to teach coding in assembly?

  7. Gap Gen says:

    Part of the reason schools don’t teach programming is because chances are the teachers don’t know how to. It’s entirely possible to teach yourself programming (hell, I did), although teaching yourself how to program *well* is another matter entirely. It’s not entirely impossible that ICT curriculum could be upgraded from Baby’s First Computer Lessons to something with genuine content with the correct people setting it (although this could have already changed since I was at school, of course).

    In any case, computing has changed significantly since I was at school. Now everyone uses a computer, but how they use it is probably very different from hacking through Windows 3.11 or whatever we were doing back then. Sharing stuff online is also much easier than hacking out some abomination in HTML, and as a bonus you can also willingly donate personal information to malevolent corporations.

    • InternetBatman says:

      My school had a program class (IB Computer Science) and had to cancel it due to lack of interest. The CCNA and Autocad classes are still going strong though.

  8. Brosepholis says:

    I started programming with Super Logo when I was maybe… ten? And now I make videogames for a living. If you are introduced to the process of thinking like a machine really early then learning a grown-up programming language in later life will come very naturally. This is a therefore a great initiative!

  9. Hairball says:

    If you live in Ireland there’s a think called “Coder Dojo” which is essentially the same thing. If you have kids/can program and would like to volunteer look them up and go along!

  10. Bluerps says:

    Really good idea. I learned programming in school, but when I was around 16, not 9-11. I think I would have profited from learning it earlier than I did.

  11. RC-1290'Dreadnought' says:

    So they’re basically trying to put me out of a job? Thanks very much…

    Just kidding of course. I would cheer if I heard a few kids arguing over if curly braces for functions should be placed on a new line or not ^^

    • Harlander says:

      Ah, I love those sorts of arguments. Like the “invert mouse or not” one, everyone gets so exercised about the issue, when it basically comes down to whichever style you encountered first.

  12. sinister agent says:

    Oh man. If I’d learned how to code before I learned how to be lazy and crap and emotionally dead, my life would be close to unrecognisable. Best of luck to them. It’s embarassing how behind the times we are.

  13. Nim says:

    Funny thing about coding is that some people will pick it up really quick, other may take a while, even more will struggle and astoundingly many can never learn it at all. It’s not the way coding is taught, it’s not that it’s a difficult subject, it’s simply that a large portion of the population will never ever ever be able to code and should stay far far away from anything related to coding.

    This fact makes coding lessons undesirable as a standard teaching subject in school. Why teach a subject that only a percent of the pupils will ever be able to understand? That’s a waste of the rest’s time and a waste of the school’s limited resources. It’s okay to teach programming as an extra-curricular activity to interested pupils which usually show greater potential for learning programming but introducing the subject into the standard curriculum is a fool’s venture.

    Source:
    http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

    • sinister agent says:

      Why teach a subject that only a percent of the pupils will ever be able to understand?

      Because you could use the same argument to wipe out pretty much every class in existence. Why try to teach anything when some people might not get it?

      It’s certainly not a good argument for never even trying to teach everyone coding. Sure, trying to beat it into them for years if they’re clearly just not cut out for/interested in it would be foolish and cruel, but even a half-arsed attempt to make it mandatory for a while would be a potentially life-changing experience for millions of people. It’s a no-brainer, frankly.

      It’s certainly more useful than the hundreds of times I was bollocked for having shitty handwriting; a fact that was never, ever going to change, and even if it magcally did, would have made literally no difference to my life at all.

      • Nim says:

        I am in favor of exposing what coding is to pupils and I think a demonstration by a person with significant experience in programming showing how computers work and how we make the computer do what we want it to do is quite necessary in our schools. What I protested was to force the subject into the standard curriculum.

        • Zanchito says:

          Nim: I agree, it’d be good for pupils to know how a computer REALLY works, even if it’s just a general idea and a couple of experiments, but to go in depth for that… Maybe as an optional subject or extracurricular offer, not something mandatory.

          I have to say that learning programming has more benefits than just the programming itself. It teaches people to recognize cause-effect relationships, interaction between systems, abstraction, design and analytical thinking. Those skills are valuable for anything.

  14. Yosharian says:

    Programming cannot be taught effectively in Primary Schools right now, for two reasons.

    1) The people in charge of education do not care about actual education, only about getting ever-higher scores in Maths, English and Science. This is because schools are judged extremely harshly on their performance in these areas. Basically everyone is shit-scared of getting ‘bad’ results in these areas (Note: what used to be ‘ok’ is now ‘bad’).

    2) The people doing actual teaching in Primary Schools do not know what programming is, and most are not interested in putting the effort in to learn it. Why? Sometimes it’s because they just don’t like/are confident enough with computers. Often it’s because they are too busy trying to get higher scores in Maths, English and Science.

    Hopefully this improves people’s frame of reference somewhat when they talk about ‘why programming isn’t being taught in schools properly’.

  15. tossrStu says:

    It’s sad to think that today’s kids are missing out on some of the simple pleasures of life, like programming the display computers in Dixons.

    10 PRINT “BUM POO WILLYS”
    20 GOTO 10

    • Jahkaivah says:

      I imagine schools would be offended by such vulgar use of computers and encourage students to find more elegant ways of spamming “BUM POO WILLYS” than a GOTO statement.