I’m with Kenny on this.
As a self-taught programmer. I can write functional, reliable programs that do useful things. However, I never studied computer science. It’s only more recently that I’ve been getting my head around the inner workings of quicksort, and the lambda calculus. I think it is important to have an understanding of such principles, but it’s not the best introduction to programming..
It’s better (at least, for my learning style) to approach programming through “here’s a problem, here’s how you go around solving it”. In the process, you can teach language structures – it doesn’t really matter which language, since share common features (variables, loops, conditionals). Once kids have a grasp of one language, the second is much easier to learn, and the more fundamental principles can be taught as the problems to be solved become more complex.
Coding is much more than spelling. It’s how to construct sentences, and then to link sentences and paragraphs together in order to make a coherent whole. It’s possible to write functional prose, even poetry, without a thorough grounding in prosody or formal knowledge of grammar.