For example, when I first learned how to play piano, I wasn't taught how to play Major 9th chords. Rather, I learned simple melodies and expanded into more complicated harmony as I grew older. The reason why I began learning more theory was because I knew of its potential to make me a better musician. This can be applied to computer science learning as well. You definitely don't want to start kids off on learning by trying to explain how a sorting algorithm works, that's totally meaningless. You want them to get things working, make them solve problems, give them problems that are so absurdly hard to solve with their current knowledge that they MUST find an alternative.
This is how you truly educate. By making people solve their own problems, because they have to. It's really funny how people step up their game when they believe they have to do something for their own good.