If you want kids to learn how to code make games with them. It's by far the most approachable subject and it doesn't take long until a game of any complexity allows you to slowly introduce more serious material. I'm pretty sure there were only two phases in my career when I jumped a level (or two) up in capabilities in a very short time, the first was when I was a professional games programmer, the second when I wrote an operating system.
I would strongly recommend against the second ;)
Except you have to call them stories, just in case some girls might be put off ... eg http://kata.coderdojo.com/wiki/How_to_encourage_girls.
[It's relevant because all the "communities" mentioned in the post promote girls as deserving special treatment that is not offered to boys. Either overtly or less conspicuously - code.org and coderdojo make special notes on how to encourage girls but no special notes on how to encourage boys that I can find (please correct me).
I'm not saying you shouldn't consider that some children might prefer a story-based approach (boys and girls); a specific active/physical approach might be preferred by some children, or ... ]
Yes, but teaching them protocols and network infrastructure? I can't think of a worse way to get them excited.
That being said, I think Quick Sort is a lousy sorting algorithm for teaching. Mergesort and Treesort are much better.
As an arbitrary example, take Quick Sort. Trying to explain the algorithm to someone who doesn't know how to code is exceptionally difficult. Once they practically understand recursion, then it becomes simple.
I completely agree with you that CT is exceptionally valuable. My issue is with the timeline. I personally feel (and I am completely open to the idea that I might be wrong, given my inexperience), that we should be teaching kids to code first and then CT afterwards. CT, without the benefit a knowledge of programming or University level mathematics, is a little pointless.