Its a large gap between teaching someone to write code, and program. A lot of current implementations of CS and Programming classes are just teaching a student the basic blocks, and how to use them in an environment like Java. The problem is, without the more complex blocks and the ability to understand how they fit together as a whole (not just in one language), students really just end up with a set of skills in purgatory.