Note: I’ve moved the entire comment system over to disqus, the old comments on this entry have been archived here.
There have been a lot of attempts in order to increase code literacy by fellow programmers. However, I think we need to first step back and examine why code literacy is important prior to attempting to create methods to educate.
All thought is a kind of computation.
At the core learning to program is heavily about solving problems. Problem solving is something that is rather difficult to teach and programming provides a nice outlet for this. The necessary logic understanding for programming provides a way to express problems in an easier more approachable manner. Learning what an algorithm is and even writing an algorithm can demonstrate to a student the creative process for solving problems. Debugging a piece of code teaches the multiple ways in order to examine a problem in order to discover the root cause.
Programming provides an additional creative outlet for many people. Writing code is literally writing. You are creating sentences and the general flow of writing a program should be rather similar to that of writing anything else. From outlining the general flow prior to the writing process to the actual process of sitting down and fleshing out the entire piece where there is a point of entry, the central guts, and the end. Creating a program is simply an art with a different medium.
A programming language is like a natural, human language in that it favors certain metaphors, images, and ways of thinking.
Learning an understanding of the technology that is ubiquitous in this modern world is increasingly important. Those with the knowledge of technology are better at using the technological tools than those without. An underlying knowledge of how the code is written that drives the world demystifies much of our technologies and makes it clearer what abilities and limitations such technologies have.
As it stands at the moment the code literate of our society are mostly white men, which means the majority of code written today is not representative of our society as a whole. People tend write code to solve problems that are important to themselves. It is essential that the code literate in our society not only grow in size but become more diverse.