Imagine, if you will, a world where Americans don't teach their children math in elementary school. Imagine that children no longer learn addition in first grade, subtraction in second or multiplication and division in third and fourth. Imagine instead that children make it all the way through high school without having any formal presentation of mathematical concepts. Now imagine that a student is observant enough to realize that adults who have a firm grasp on mathematics have much better problem-solving life skills and financial opportunities than adults who don't. If that student is curious enough to enroll in an undergraduate math class, imagine how frustrating it would be to have the whole of arithmetic, algebra and statistics thrown at you in your very first term. Wouldn't it feel overwhelming? Wouldn't you be discouraged... especially if you noticed that several people in the class already seemed to understand the stuff fluently? Wouldn't it be difficult to perceive the subject as one where you have talent?
This hypothetical may seem ridiculous, but the truth is that a similar situation is being played out in America today with the subject of computer science. For many, computer science isn't introduced at a k-12 level, so their first exposure comes in an undergraduate classroom, where they're forced to absorb all of the basic building blocks of computational thinking at lightning speed before they can begin to fathom the concept of programming, design or engineering. To add further blows, a handful of students (often boys) will actually have skills in these areas, making the newcomers feel deficient, awkward and behind.
How can we rectify this frustrating situation? It could be as easy as giving formal language to computational thinking concepts beginning in elementary school. Students don't have to be given computers as toddlers in order to start creating a technological foundation. It's not as if we currently go looking for grants to put graphing calculators in the hands of kindergarteners for arithmetic. We start with age appropriate tools, preferably tactile examples, then associate the formal language of math to the skills they're learning. We show them how to count two groups of objects, then have them count the total and call that "addition." Why can't we have them step through sorting blocks from smallest to largest and call that an "algorithm?" Why can't we have them find a solution that works for two different types of problems and call that "abstraction"?
I acknowledge that it's more than the fear of calling curriculum "computer science" that holds us back. Teachers are overwhelmed with the number of subjects that they already have to squeeze into a day. After all, mathematics is required in educational assessments and computer science is not. My challenge to you is to think of the world that our students will be working in, and ask yourself whether we should be preparing our children only for assessments, or if we should be preparing them for life-long success. Computational thinking gives students the skills required to solve problems even when they have never explicitly been taught the answers. It encourages them to think of things in creative ways and helps them to navigate complex situations by breaking them up into manageable pieces. Don't those skills seem fundamental to a successful adult? Isn't it possible that skills like those could help a student raise their scores on all required assessments? I invite educators everywhere to take a challenge of numbers. Feed your kids computer science for one year, with or without machines, and look at the scores that they produce on required exams. Post your results here and we'll have a healthy, hearty discussion.