Coding or programming or computer science.

A revised ‘computing’ curriculum became statutory in September 2014, amongst its aims is ‘be able to analyse problems in computational terms, and have repeated practical experience of writing computer programs in order to solve them’. It is referred to, in part, as computer science but I can’t say I know what computer science is? I’ll happily go along with Humpty Dumpty ‘when I use a word, it means just what I choose it to mean - neither more nor less.’ So that’s that settled. There again I could borrow from Mississippi State University

My own concern is only with the programming element and whether this is science or art I would tend to say it is an art. I’ll happily invoke Knuth’s monumentally work "The Art of Computer Programming" – not that I have little more than dipped into quotes from it. It’s an art and a skill like riding a bike or swimming the only way to achieve any level of skill is constant practice. One oft quoted remark is it takes 10,000 of practice hours to practice to make a competent programmer. Certainly I employed fledging programmes straight from university who had difficulty finding a job as many advertisements stipulated ‘at least two years experience.’ So how far will schools develop such skills with maybe 40minutes a week programming over 6-8 years. So maybe with a bit of luck that could be 150 hours of the 10,000.

The word gaining usage in schools is coding sometimes programming. Perhaps to the purist there is a distinction as Tom Fordham might have. Some would have the distinction as programming is creating the logic, coding is translating that logic into code. The emphasis in schools seems to be ‘coding’ but without using coding to find a solution to some problem (challenge) this to me seems rather pointless. It’s painting by numbers. But to use code to do programming one must first learn the language that is used. It’s the problem solving aspect that I believe should be the emphasis in teaching.

I’m a big fan of Scratch 2 because it allows an easier route into programming where K2 can quickly produce simple programmes that they see as fun and meaningful. It has its distractors, Gregor Ulm, and compared to a grownup language many limitations but I hope on the challenges, I have put on this web site, it is not seen merely as a trivial programming tool. It has its foibles no functions, no break points, single stepping etc. After a while it actually becomes easier to debug then some scripting languages just in a different way. Its omissions just means you have to be more creative in the use of the limitations of its toolbox. It’s the work around master that separates the great programmer from the jobbing programmer.

But can programming, can it be defined, and how is it to be taught? A.J.Guttmann’s book could offer some clues and is certainly worth a read-especially if your interest lies in comparing Algol with Fortran. He notes ideas have changed considerably over the 'last decade' a remark which is still prevalent today as the nature of programming is still evolving as it passes through its fads. I tend to think today its more about splicing parts from various libraries and using code snippets then bare programming on a blank canvas. O if only scratch had cut and paste or backpack in the download version.

If we can’t define it then what are we trying to teach and for why? In Reflections on Teaching of Programming by Jens Bennedsen, Mickael Caspersen and Michael Kölling the forward by David Gries poses the question of how is programming taught. Having spent four terms of ‘coding’ with KS2 children I cannot answer any of the questions only make a few observations. The question I ask can anything of value come from these classes if it’s to impart the skill of programming because Teaching programming skills to children is seen as a long-term solution to the “skills gap” between the number of technology jobs and the people qualified to fill them. Or is it …giving them the thinking skills that will help them become proactive learners and citizens. Can't it be about getting the kids to write programmes? This last blog mentions when Seymour Papert and the Logo movement took education by storm but the storm fizzled out surviving in small pockets with aficionados – will this new computing go the same way, I’m betting maybe a five year life span.

Still I’m of the opinion that it worth pursuing the idea but the question of the aims and methods using in teaching the subject are unclear. I question the value of starting at an early age although my own experiences suggest children of 8 can grasp the basics and make small but still meaningful programs. But how far can they go and the challenges I have put on this web site could well test A level students. At what point do the children turn off when showing a class some code for a small programme came the remark ‘gosh so many blocks’ it must have been all of twenty. I then showed them the lines in the game oh nim, the class just went quiet and I detected a sense of turning off the subject. For what it's worth I have some random thougths.

So I believe the avenue to use is more akin to working with nursery school children and just as we did with painting give them a paint brush, paints and a piece of paper let them get on with it, learning trough play. Give them a series of challenges or let them set their own goals although the danger is being too ambitious. There’s no need to talk of loops, conditional structures and the words algorithm, abstraction (whatever they mean?) need never enter the classroom. The ideas of these come out of the programming challenges, it’s the concept of problem solving and that programming is just a tool to achieve that.