Programs for Programming

Everyone remembers having to learn cursive in grade school; it was a faster, fancier way to write than print. Keyboarding was never required in 1990’s public education, but I was fortunate enough to pick it up as an optional elective in middle school. Despite this, I can’t help but note how much more often I use the latter over the former in my everyday life. Is it just because I am a computer scientist? Or is it a sign of the changing times? I don’t claim to know what’s best for today’s grade school curriculum, but I’m sure most people would agree that these priorities should be changed if they haven’t been already.

What about programming then? Historically, keyboarding and programming were both skillsets that only the technologically inclined had to know. But today, toddlers swipe away at their smartphones while their grandparents continue to hunt-and-peck away at old keyboards. Today in the twenty-first century you don’t have to be inclined to participate in technology – technology comes to you! As a result of this, there is a modern day program to introduce more people to, well, programming. CS4All, or Computer Science for All, is a new education movement that seeks to “provide equity, empowerment, and opportunities that maximize the innate potential of every student”. Previously, low income families rarely had the opportunity to expose their children to computing careers, and CS4All aims to spark that interest in as many students as early as they can.

But where exactly should computer science fit into a typical K-12 curriculum? In my own experience fundamentals of computing was available as early as grade school and keyboarding was an elective in middle school. Actual programming did not come until high school (in my case, Java), and even then that might have only been because I specifically attended a technology academy. And while I agree with the overall goals of CS4All, it’s important to recognize that not everyone has the drive or want to end up in the computer science field. This makes it a bit similar to math in that, although everyone is required to study it to a certain degree, the extent to which most people actually use it on a daily basis is limited to a very basic level. If you think about the practicality of it, among everyone who begins studying math in grade school those who go on to earn a mathematician’s degree are few and far between.

Some would argue that having to learn programming in order to use computers would be the same as having to learn automobile mechanics in order to drive a car. I’m inclined to agree. As any computer scientist can tell you, abstraction is a very important aspect of programming. Abstraction is the concept of providing users with a simple interface that does not reveal any of its underlying complexities. In today’s society many people of all professions use computers without a full understanding of what goes on under the hood. CS4All’s aim is to remove a layer of abstraction regarding computer science by giving more people the means to not just use technology, but code and create it through programming. The problem is, making this type of education mandatory would create an unnecessary expense in the form of students spending time studying programming with no intention of entering the field in the first place!

This doesn’t mean to say that I don’t believe in exposing children to programming at an earlier age. In fact, I’m all for it! I just believe that what we should guarantee is the opportunity for students and their families to opt into such a computer program without having to pay any unreasonable, additional expenses, not making it mandatory for everyone. This way, schools only have to pay as much as the community demands and the option is always open for children to dip a toe into the pool of computer science and see if they like it.