Coding, STEM, robotics; these have become buzzwords for what a 21st century education should be. Schools are working to integrate technology into the classroom and curriculum, and companies are looking to create products that help children learn and master these new skills. But is it right to put such an emphasis on ‘STEM education’ at the elementary school level?
The fundamental subjects taught in elementary school are math, science, social studies, language arts, music, art and reading. Though there’s some disagreement about this, it’s generally accepted that these are all necessary subjects, many of which have cross-disciplinary benefits. It’s not only future mathematicians who will benefit from learning elementary school math; an enormous amount of professional fields require basic math, and math has benefits beyond the subject, for example in developing critical thinking and logical reasoning skills.
We think of most other core elementary subjects in the same way; art and music develop creativity and other skills, reading is obviously essential, and so on and so forth. What isn’t generally part of an elementary school curriculum, however, are highly specialized subjects. We aren’t teaching 5th graders a mechanical engineering class, for example.
It’s easy to see how coding might be viewed this way; a highly specialized subject that doesn’t need to be taught until later in life, like mechanical engineering. Coding is different than many other fields, however, and for a few reasons. Mark Engelberg, a former NASA programmer, educator and ThinkFun inventor, describes the problem in this way:
“Many domains are able to leverage the significant number of years that students have already invested in grade school in English, math and science. For example, most students who go into mechanical engineering have already had the opportunity to learn math up through calculus and have learned physics as well. Imagine how many years it would take to become a mechanical engineer with absolutely no prior math or science instruction, and you’ll begin to appreciate the problem that CS departments face.”
Coding isn’t able to build on the typical fields of study elementary and high school students are put through in the same way that other professions can. Again, in Mark’s words;
“But wait a second…computer science is an engineering discipline. Shouldn’t computer science benefit from kids’ math and science education as much as any other science/tech subject? Unfortunately, no. Calculus, the pinnacle of grade school math education as it is currently structured, is the least relevant type of math for computer scientists. Computer scientists need a strong background in discrete math and these topics are poorly covered in grade school, if at all.”
This is a serious challenge for students who want to become programmers; they’re almost starting from scratch, at the college level in many cases, whereas some of their peers have the advantage of years of preparation for their chosen fields. Given the gap between the number of available professionals and open jobs in the field – Code.org’s numbers indicate that last year about 43,000 CS students graduated into the workforce, in a field with 530,000 available jobs – it seems clear that there is a significant need for programming education.
But, one might ask, can we really add in such a specialized subject to the elementary school curriculum? That’s a lot of open jobs, but when compared to the size of the total economy shouldn’t the focus remain on core subjects with cross-disciplinary benefits?
“Learning to write programs stretches your mind, and helps you think better, creates a way of thinking about things that I think is helpful in all domains.” -Bill Gates
That’s where the other, and more important, reason for having computer science education at the elementary school level comes in. Learning how to code is, in fact, a skill with benefits outside of the subject, in much the same way that math is. These benefits come in two forms; first, learning to code develops logical reasoning and critical thinking skills, and second, it helps you understand the (21st century) world.
We see the evidence of how programming is changing the world all around us, whether it’s in the use of algorithms in investing or the Fitbit craze. (IBM has an excellent list here detailing the ways that more and more industries are using big data.) For students being raised in this digitally connected world, understanding this shift towards ‘computational thinking’ is key.
Dr. Dan Crow, a CS professor at Leeds University, wrote an excellent summary of computational thinking and why it’s necessary in an op-ed for The Guardian:
“Will every job in the future involve programming? No. But it is still crucial that every child learns to code. This is not primarily about equipping the next generation to work as software engineers, it is about promoting computational thinking. Computational thinking is how software engineers solve problems. It combines mathematics, logic and algorithms, and teaches you a new way to think about the world. Computational thinking teaches you how to tackle large problems by breaking them down into a sequence of smaller, more manageable problems. It allows you to tackle complex problems in efficient ways that operate at huge scale. It involves creating models of the real world with a suitable level of abstraction, and focus on the most pertinent aspects. It helps you go from specific solutions to general ones.”
The landscape of our world and economy is shifting rapidly with the emergency of big data and new technology, and our education system has to shift with it and teach students new skills. Not because everyone has to grow up to become a programmer, but because a new world with new challenges requires a new way of thinking.