The UK introduced its National Computing Curriculum a couple of years ago, which requires all children to study computer science from age 4, and programming from age 10. Children can opt out of the subject aged 16.
Schools are struggling to implement the curriculum, mainly due to a lack of teaching staff that can program, but the hope is that things will improve over time.
The UK National Curriculum defines three key skills (English, Mathematics and Science) that must be studied. Computing is defined as one of the four sciences (along with Physics, Chemistry and Biology), which is why British children must now learn to code.
Some people argue that traditional computer literacy is a specialist skill, and do not think the subject should be mandatory. The counter is that the curriculum is not designed to teach specialist skills, insisting that there is a core subset of programming concepts that every educated person should understand.
The official guidance does not make it clear which programming concepts should be taught, instead offering vague recommendations. This is about as good as it gets:
use 2 or more programming languages, at least one of which is textual, to solve a variety of computational problems; make appropriate use of data structures [for example, lists, tables or arrays]; design and develop modular programs that use procedures or functions
understand simple Boolean logic [for example, AND, OR and NOT] and some of its uses in circuits and programming; understand how numbers can be represented in binary, and be able to carry out simple operations on binary numbers [for example, binary addition, and conversion between binary and decimal]
I understand this is not the place for a debate or discussion, so would like to ask if anyone could define what general purpose programming skills are, with any clarity?