Some great news today that the UK school ICT programme is going to be replaced/updated with computer science. As far as I can tell a lot of schools have actually been doing this stuff already with Scratch, but this means targeting teacher training for broader roll-out.
This has immediately triggered bike shedding about the issue of which programming language is used. To quote twitter, “iteration is iteration and variables are variables. Doesn’t matter if its VB, ASP, Java, or COBOL”. Apparently one of these should be used because they are “real languages” and Scratch isn’t.
This brought to the fore something I’ve been thinking about for a while, “computational thinking”. This seems to most often be used interchangeably with “procedural thinking”, i.e. breaking down a problem into a sequence of operations to solve it. From this view it makes perfect sense to focus on iteration, alternation and state, and see the language as incidental, and therefore pick a mainstream language designed for business programming rather than teaching.
The problem with this view is that thinking of problems in terms of sequences of abstract operations is only one way of thinking about programming languages. Furthermore it is is surface level, and perhaps rather dull. Ingrained Java programmers might find other approaches to programming difficult, but fresh minds do not, and I’d argue that a broader perspective would serve a far broader range of children than the traditional group of people who tend to be atypical on the autistic spectrum, and who have overwhelmed the programming language design community for far too long. (This is not meant to be an outward attack, after all I am a white, middle-aged male working in a computer science department..)
I’d argue then that computational thinking is far richer than just procedural thinking alone. For example programmers engage mental imagery when they program, and so in my view what is most important to computational thinking is the interaction between mental imagery and abstract thinking.. Abstract procedures are only half of the story, and the whole is far greater than the sum. For this reason I believe the visuospatial scene of the programmer’s user environment is really key in its support for computational thinking.
Computation is increasingly becoming more about human interaction than abstract halting Turing machines, which in turn should direct us to re-imagining the scope of programming as creative exploration of human relationships with the world. In my view this calls for engaging with the various declarative and multi-paradigm approaches to programming and radical UI design in fields such as programming HCI. If school programming languages that serve children best end up looking quite a bit different from conventional programming languages, maybe it’s actually the conventions that need changing.
I don’t think you’re wrong in general, but this is shitty:
“the traditional group who tend to be atypical on the autistic spectrum, and who have overwhelmed the programming language design community for far too long.”
Could you be a bit more specific with your objection? Being atypical is not necessarily a bad thing, indeed I think being neurotypical would be an unfortunate state to be in. However if the entire practice of programming is controlled by a particular group of people exhibiting particular traits, then we have problems…
To me it comes across as ableist, sort of like “if only those damn aspies didn’t control everything, programming would be better”.
I don’t know if you’re on the spectrum which obviously would affect my interpretation, but generally when I hear any mention of autism or Asperger’s in the computing field it’s something along the lines “damn aspie devs not understanding anything except programming”. On re-examination, maybe that speaks to the company I keep.
Hi mkb, actually I don’t know where I am on the spectrum (in the sense that it is a spectrum we all are *somewhere* on it), and would generally not be in favour of overtly classifying people or medicalising areas of the spectrum without a clear need, so share your concerns.
I suspect though I am atypical, in that I am able to engage fully with programming languages for hours on end and am perhaps not as engaged with wider society as I would like. So the above is meant to be in the spirit of a white middle aged male, working in a computer science department, wondering if my kind could perhaps engage wider society more fully with the wonder of computation.
I can see how my post could be read the other way though so I’ll edit it a little.
“The problem with this view is that thinking of problems in terms of sequences of abstract operations is only one way of thinking about programming languages.” – I find this quite interesting as I am currently creating a dance piece about this. It starts with a series of instructions that the performer must execute but slowly the performer subverts this to create their own movement.
Nice one Kate, seems like your piece could be framed as live coding: http://toplap.org/index.php/Live_Coding_Without_Computers
I’d have loved to have been taught Scheme in school, and there is comparative research that suggests that teaching Scheme actually levels out gender bias. Of course you know much more about your daughter’s situation than me, but I’d suggest that perhaps she just had a bad teacher.
Python is great because it forces you to lay your program out in a way that makes sense. This is actually the kind of visual programming I am talking about, not getting rid of textual languages, but supporting them through visual structure.
Part of the problem is that the term “graphical programming” is generally used in a way that makes no sense, even in the visual programming literature. After all, text is also graphical, and graphical programming should be thought of as text which is structured in a way that allows us to use a fuller spectrum of perceptual and cognitive resources.
I think the reason that we do not design our programming languages in this way is due to embedded sexism. Women tend to be better visual thinkers than men, and visual thinking isn’t about thinking with pictures, it’s about integrating perception and language as a whole. In other words, it’s men who are missing something here, and because programming languages are often designed by men, programming languages are missing something.
I just don’t buy the argument that there will always be a few children who are natural at programming and others have no chance. We just need to make the language environments better so they’re more suitable for a wider range of tasks.