We do our shopping online, obtain most of our information through online news outlets, stream our entertainment through our computers, control our thermostat with our smartphones, depend on Google maps for navigation, and soon even the mechanical beast of the 20th century, the automobile, will become a self-driving, digitally controlled device. While we witness these changes happening around us, our children are growing up in this world, having never known anything different. It is important that they are not only comfortable with technology but that they understand its limits and know how to use and control it to improve our world and solve many of the challenging problems we face.
I’ve always been interested in computers and programming. I learned how to code on an Apple IIe at age 12, wrote my senior thesis in college on how to use computers to teach, and spent 10 years in the industry as a computer consultant and network administrator. Fifteen years ago, I left the corporate world and decided to become a teacher of math and computer science. It was one of the best decisions I ever made. Here is why I love teaching programming, commonly referred to as coding, and why I think it is such an important skill for our children to learn.
Coding is creative
Programming is a branch of mathematics, but it also involves elements of art and creativity. My absolute favorite moment in my classroom is when a boy pumps his fist into the air and cries out, “Yes!” when he gets his program to run. It is very empowering for students. They have grown up with software, use it constantly, and now are creating their own. Think about that for a minute. With just a keyboard and a little knowledge, they can create something. How many of us can say something like that in our own lives? I once had dreams of building cars, but the learning curve and the capital investment are extremely high. The material required to create software is actually pretty low. Almost anyone can do it. And there is nothing more satisfying than having an idea for a program, typing the commands in to the compiler, and seeing your hard work come to fruition.
Coding teaches discipline
Programming forces the boys to think logically, analyze, and break problems down into their constituent parts. That in and of itself is an extremely valuable skill. Programming naturally turns my students into problem-solvers. This skill will prove invaluable in whatever field they choose to pursue, whether it’s politics, medicine, law, engineering (or even computer science!). When writing a program, the computer has no “opinion” on whether a student’s idea is correct or not. Either a student knows the correct syntax and can apply the commands correctly to solve the problem, or he cannot. There is very little middle ground. The boys in my class quickly learn that they cannot fudge an answer or try to argue with the machine about what they meant to write. The computer will simply not execute bad code. The machine holds them accountable because its feedback is immediate, and as a byproduct, they learn disciplined thinking.
Coding demystifies the digital world
Learning how to program teaches students another extremely valuable lesson: computer science is not magic. The computer is simply a machine that is following a very specific series of instructions to achieve its goal. Students learn that when they see the color green appear on the screen, it is simply a very specific binary number (001100) that was sent to the computer’s brain. Another number (111100) would produce a different color (in this case yellow). They learn that when they press “send” on an email, each letter in their message is first converted to its corresponding numeric code, some addressing information is affixed to the start of the message (like a letter being placed in an envelope), and the numeric data is transmitted via electrical or light pulses over the same wires that constitute our phone system. Other machines on this network (which we call the Internet) use that same addressing information to route the message to its destination, in much the same way that we use zip codes and street addresses to send letters. Learning how to code allows students to see and understand how the digital world works.
Coding and society
I’m not looking to turn every one of my students into an expert programmer. Quite frankly, that’s not what this world needs. I hope to produce men who can talk intelligently about technology, who are comfortable with technology, and who can make informed decisions with technology. They need to understand its limits and understand its potential. From the sweeping societal changes that big data and intelligent machines are bringing, to the latest news of cyberattacks on our political and financial infrastructure, our children must be prepared to navigate this new world. As someone very familiar with technology and its capabilities, I am sometimes dismayed when I hear people in power making pronouncements about technology. Some of our lawmakers are shockingly ignorant about this new digital age. Our representatives are passing laws that affect our privacy, our access to technology, and our rights as digital citizens, but they may have never even used Facebook and have only a dim understanding of social media. We need more informed leaders.
One of the exercises we do in my class is that each student must do an online search about one of his classmates. It is sometimes surprising for my students to discover how large a digital footprint some of them already have. And one of the things I repeatedly tell them is, “If you’re not paying for the service, then YOU are the product they are selling.” Companies like Facebook, Snapchat, and even Discord make their money by tracking our online activities and selling our preferences to advertisers. The students need to be aware that this is happening and equip themselves with the tools needed to limit this surveillance if they so choose.
Coding reaches all types of learners
It is a mistake to think that coding is only for smart kids. I’ve seen many different kinds of boys respond to coding. All it takes to be successful is the ability to think logically, learn from the feedback the computer provides, and persist until the software works.
I teach many different kinds of students. Some of them are excited by the feeling of control that coding gives them. Some are excited to discover that now they can create their games and implement their own ideas. Others are inspired to use computers to create 3D models or virtual landscapes. Still, others are thrilled by the sense of understanding the digital world that studying computer science gives them. All learn that computer science is an indispensable skill in today’s world. It affects all aspects of learning and society: computers are used to improve the harvest yield on tractors; analyze the movements and performance of NBA basketball players; produce every Hollywood movie; search for the cure to cancer. Coding has become an interdisciplinary subject that encourages creative problem-solving and design thinking. I have boys in my class who love to tinker; boys who are artists; boys who love physics; boys who are entrepreneurs. They all come together to learn and create.
Coding is the future
We are living in the future. We may not have the moon bases or flying cars we were promised, but in my shirt pocket sits a device that has access to almost the totality of human knowledge. Right now, is an extremely exciting time to be studying computer science. There is always something new to learn, whether a new programming language, a new programming paradigm, or a new useful app. Innovation happens daily. Many technologies, like virtual reality and machine learning, are still in their very early days. It is easy to get in on the ground floor right now and make a name for yourself. Coding is as exciting and vital as it ever was. Take the plunge and join the adventure!