A software company writing an article recently contacted me with a few questions regarding computer science education. There are many curious parents out there wondering what their kids should learn, and they wanted to help them out. Questions like how early kids should be introduced to coding and computer science, should computer science be required for all students, and my favorite, what my thoughts were on computer science being counted as a foreign language. Given my experience as a software engineer and lead educator at We Can Code IT, I have thought about these questions a lot. Hopefully you will gain some understanding of what is important to teach kids and why it’s important for them to learn these 21st century skills.
I think basic applications useful in the classroom should be introduced by the 2nd grade. Kids can learn Google Apps (docs, slides, etc) starting around this age with relative ease, plus they typically love making presentations. Typing should be introduced around the same time. Otherwise, kids will learn hunt-and-peck on their own, which isn’t a very efficient method. Get these modern-day basic skills out of the way and introduce kids early on so that they are ready for school projects in the future that will require knowledge of such applications.
I think basic apps, typing, and Computational Thinking classes should be required, yes. Computational thinking helps people think in a logical, analytical way, and can be applied to nearly any profession. It’s great to introduce kids to concepts like sequences, loops, and data. Also, teaching kids good practices like testing, modularizing, experimenting will help them in all of their classes. Exposing them to perspectives through collaboration is necessary for all jobs. These skills will not only help them perform better in school, more importantly, they will help them investigate and make sense of the world around them.
Why is this Computational Thinking framework important? Let me give you an analogy that relates to math. Programming is akin to knowing how to write an equation that another person would be able to compute. For example, you might want to perform addition on two numbers and assign that number to a variable called “x.” Knowing how to write a mathematical equation is like programming. These written equations are pretty useless on their own, when not placed in the context of solving a problem. That’s why knowing how to create solutions is more important.
Such solution development is akin to software engineering. When I speak of education that focuses on Computational Thinking, I’m basically saying that we need a way to teach kids how to solve problems in a logical way. Computational Thinking is a useful framework that helps people create solutions. I think that Computational Thinking should be required, and since programming languages are an elegant and popular way to learn and communicate such thinking, yes, programming classes would be an ideal way to learn how to innovate, create, and build solutions in the 21st century.
Although I think it’s very creative of educators to try and sneak programming in as a foreign language so kids can learn relevant skills while gaining credit towards graduation, it’s just not the same as a foreign language. Dictionary.com defines foreign language as “any language used in a country other than one’s own; a language that is studied mostly for cultural insight.” Given that definition, programming languages are not foreign languages. Programming has much more in common with engineering and math than it does with human languages.
To break this down, you need to understand that programming languages are humanized versions of machine language. Programming languages all boil down to “1” and “0,” “true” and “false,” “on” and “off.” Humans have a hard time communicating this way, so programming languages were developed to help us give commands to computers. Because of this, I can understand that some people might think this is akin to a foreign language. However, we could abstract many concepts so that they appear to be foreign languages. For example if someone writes a mathematical equation, is that a foreign language? You might argue that we are communicating with one another using these symbols. What about an electrical engineer who creates a circuit? One could argue that the engineer is communicating to a machine through electricity, but foreign language feels like a big stretch there too. The solution is for schools to keep pace with modern times in order to allow computer programming and software engineering to stand on their own, or categorize them as part of applied mathematics.