Nobody can deny the importance of computers in everyday life. However, many think that computer programming is a highly specialized subject that should only be taught as an elective. However, I will make the case that computer programming has a place in the core curriculum, whether or not your student plans on pursuing a technology career or not.
The goal of education is not to make our children experts on every subject. We don’t teach math only to budding mathematicians, chemistry to budding chemists, or physics to budding physicists. The goal of each of these subjects is to give students enough of a feel for the subject that they can have some understanding of the role and importance of these fields in daily life.
We don’t teach chemistry to high schoolers with the expectation that they will know the right things to mix together to make a new kind of fuel or an enhanced bathroom cleaner. We teach them chemistry because they need to know the basics of what goes into making chemical products of any kind. Having some experience with it removes the “magic” aspect, and it helps people ground their conceptions about what is happening in reality. They will recognize that to get chemicals, you need other chemicals, which will react and produce byproducts and heat, and allow you to extract the thing that you want. They should know that chemicals don’t spring into existence from nowhere, nor can you convert arbitrary chemicals into other arbitrary chemicals.
Having experience with chemicals, chemical equations, chemical balancing, etc., gives students direct experience with these items in order to give them a correct mental picture about this aspect of daily life.
Computer programming serves the same purpose. The goal of computer programming isn’t to make little programmers; it is to give students enough low-level experience with the computer that they understand what goes into making a computer program work. This will help them understand both the possibilities and limitations of what computers can do for them—whether or not they ever actually make programs themselves.
All sorts of people in non-technical jobs will need to speak to computer programmers and get information from them. As a computer programmer, I have gotten requests from bike mechanics, event planners, maintenance personnel, educators, and retail salespeople. What I have noticed is that the people who can articulate what they want the best are the ones who have a background in or some experience with computer programming. Those who don’t have any experience programming a computer have no idea what is possible or what is required to make a computer program work. They don’t realize the degree to which outcomes must be specified, the rigorousness of the decision-making, and the fact that nothing can be left to chance or common sense.
However, those who have experience with programming understand in a visceral way what sorts of answers programmers need to do their jobs. They understand what questions they should ask, what information they should provide, and what the limitations of the solution are likely to be. They don’t know enough to write the program themselves, but they know enough to describe what they need in ways that a programmer can implement.
Because computer programs intersect with almost every area of life, teaching computer programming is an important part of a standard, modern education.