As my daughter continues with the excellent coding club project, I still fear that programming is being taught “backwards”. By this I mean people seem to be taught a specific language and concepts are introduced as the syntax of the language is learnt. True, I, and most of my peers, learnt programming this way but we were self-taught, typically using BASIC on the school computer, housed in a broom cupboard of the Maths department.
Recently, having looked at various scripting languages: Perl, Python, Ruby to name but a few, I still end up using the same concepts and techniques and just using the syntax of the language at hand. Perhaps if I used one language enough, I would come to learn powerful language specific features. But would that necessarily be a good thing?
Provided you know the basic concepts of programming: variables, iteration, recursion, functions, parameters, you can compute what you want in most cases. Or so I have found. To widen the field, introduce list processing, functional and object oriented programming paradigms.
The basic concepts can be written in almost any language. I would start with these ideas and illustrate examples in various languages.