This concept map is derived from a list first developed as a spreadsheet in 2016 by Miles Berry, in the context of Project Quantum. That project produced a mass of multiple choice questions for computing, and to make them searchable, they were tagged with a unique topic code (hence the numbers on each). The project’s output was delivered as part of Diagnostic Questions by the company EEDI, which I worked for in 2019.
On reviewing new computer science questions made by teachers, I found many topics that were not covered by the taxonomy. The outcome of my work wouldn’t be so clear in a spreadsheet, so I constructed the concept map above using Cmap, and my additions are shown in red.
I was a little surprised at the omissions, but it isn’t an easy task to get right. I had the great good fortune to be critiquing it through a form of practice – the development of tests by teachers.
But, since then I have often wondered about this categorisation, and in particular, question its completeness and its hierarchy.
I am particularly surprised at the relegation of sub-program (in all its forms) under a heading of ‘modularity’.
Seymour Papert held a different view of the sub-program.
In MicroWorlds, Papert held that:
“The idea of programming is introduced through the metaphor of teaching the Turtle a new word.”(Papert, 1980, p. 12)
Papert’s idea suggests the sub-program a more dominant concept than selection and iteration, which with sequence, are held to be the three key algorithmic ideas in the English and Irish curricula, which have little mention of the sub-program as an algorithmic idea.
In a similar way, there is no sign of parallelism – the concept that two or more sequences of instructions may be executed at the same time. This is surprising since this is a major feature of beginning programming languages such as Scratch (and all its derivatives) and MakeCode. Parallelism features strongly because of the way it can simplify the programming of complex behaviours, such as those found in games with multiple independent graphics, that children love to make. Parallelism can bring its own problems of coordination too, but these are rarely noticed at this level.
Much is made of the challenges children face when moving from jigsaw languages like Scratch to text languages like Python, but the focus of concern is on the change of environment and the need to be accurate with syntax and grammar, rather than functionality. The loss of functionality that children suffer when they don’t find it easy to program games in Python as they could in Scratch, can so often lead to a return to Scratch programming – for its greater sophistication! This challenge is identified in the work of the Pytch project lead by my Trinity College Dublin colleague Glenn Strong.
Some of the problem is the way in which technology is a moving target. Scratch appeared in 2007, and although parallelism was in many programming languages around before that, it was not considered a beginner’s topic.
So it probably is a good idea to review the concept map regularly, and I intend to do so at conferences in China, Spain and New York – if my proposals are accepted – in the coming months.