Reading, Writing, and Arithmetic (the three Rs commonly cited), attempt to teach critical-thinking, critical analysis, critical self-review, and critical problem solving. What programming can add is using those four things to provide the basis for precise and accurate communication. Computers do exactly what you tell them to, which requires utilizing precise language. Research and writing assignments definitely touch on these skills (using accurate language to describe an idea). Mathematics brings in abstract ideas that require precise symbol manipulation to arrive at precise answers. And Reading allows one to analyze others intent, requiring accurate and precise understanding of the semantics used.

Programming very neatly captures all of these ideas in a highly interactive and instantly responsive environment. It is definitely under the realm of mathematics and captures just as much as math does, but it is much simpler to grasp as a lot of the concepts can be made much more immediately concrete and obvious. You can have visual representations drawn instantly, which quickly verify your own critical reading comprehension skills of the question being asked. It pushes your critical self-review skills to analyze what you had done and why what you did was wrong. And of course it requires critical thinking and problem solving by using the precise language and symbols to create a solution. It has everything the Three Rs try to capture, but in a neat and “fun” package.

Modern schools need new tools and new methods to teach the critical skills required of students and future adults in their employment. Many students are disinterested in school and find it gives them little utility or obvious impact to things they can immediately accomplish with those skills. (I made some sweeping assumptions here, but nothing too egregious, I think).

Programming may definitely be that new tool that many students may find interesting and engaging. It may help them to better appreciate the complex and deep aspects of reading, the precision and beauty of mathematics, and finally the utmost importance and need to write effectively.

Programming should be taught, and more people should learn to program. Not because it automatically makes you better, but because it has so many aspects that can make you a better learner and person.