We Should Have Learned Programming in the 6th Grade

Art+credits+to+Vivian+Yi%21

Art credits to Vivian Yi!

Ian Bertram ‘17

People occasionally tell me they absolutely will not take a computer science class because it’s on some intellectual plane above theirs. Any student with the proper experience in programming would correct this delusion immediately: the truth is that anybody can learn programming.

Yes, the claim sounds overly sentimental, as do similar phrases like “anybody can cook” or “anybody can sing” (I firmly disagree with the latter). However, I maintain that programming is an essential art that students should learn as early as in middle school.

The aspiring young historian might bemoan having to learn programming in the same way that the aspiring young programmer might wonder what he or she is doing in a history classroom. But history class teaches the young programmer how to think critically, to his or her benefit. Through programming, on the other hand, students (even those who don’t plan on becoming programmers) learn an analogous thought process that is more concerned with thinking algorithmically. This method of thought entails dividing a large problem into smaller ones – a process that professional programmers refer to as “modularization.” Modularization is effective because the programmer uses this method to divide a problem into simple tasks that are fairly easy to accomplish without any further insight. People that can modularize can essentially “invent” any algorithm by separating the problem into a sum of its most basic challenges.

Thinking algorithmically is just as powerful as thinking critically. For instance, competitive Rubik’s Cube solvers use various algorithms to solve the otherwise impossible puzzle. The cube has little to do with programming besides algorithms, but that’s the point of learning programming. It makes students think with a perspective that they can use to accomplish any and all complex tasks. Engineers benefit greatly from an algorithmic thought process: when designing something as complicated as a car, it’s best to think of the car in terms of its individual components (i.e. the engine or the brakes) that solve each small challenge. The combination of all those components is an algorithm to efficiently transform fuel into rotational energy. Of course, the hypothetical history student would probably never care about how cars work, but if he or she were to develop his or her problem-solving skills, they could reach a similarly advanced level.

If that sounds altogether unbelievable, consider this: programming enables students to solve such complex problems because a computer program is similar to (and can be just as complicated as) the car. To build the game Pong, for example, the programmer has to use the nuts and bolts of the programming language to build modules that continuously perform functions like measuring the position of the ball, deciding how to move the paddles, and deflecting the ball off of the side of the screen. Like the car, any dysfunction among these modules will break the machine, but a well-trained programmer quickly develops a theory about why the program broke, and repeatedly tests and adjusts the program until it works. These activities inspire abstract thought and perseverance in addition to problem-solving skill.

The advantages of learning programming amount to more than just a powerful way of thinking. In our computerized world, most firms need programmed resources like networks and software, especially in the field of engineering. In addition, people appear to realize its value as a cerebral challenge, giving the field its stigma of intelligence and genius. The class attracts students mainly for these reasons.

Sarah Richards ’17 explains, “I originally took computer science because it’s recommended by many colleges for prospective engineering majors. I think it helps me develop my logic and problem-solving skills, and I enjoy the work.”

People who have pursued programming and develop a passion for it attest that the results are even better than what students like Sarah expect. Mr. Galesi, Ridge High School’s computer science teacher, attests that “programming teaches you that there are many solutions to the same problem. Even if it doesn’t work 100 times in a row, that doesn’t mean there isn’t a solution. It teaches you to not get discouraged when things aren’t unfolding as you planned, and it teaches you to seek the point of view of others to get a different perspective. I know this skill got me through high school and college and continues to benefit me today.”

Critical thinking helps future adults make the right decisions for themselves, and thus occupies its position of importance in schools. Algorithmic thinking is just as important: it helps people plan ahead, and to devise a set of steps for accomplishing abstract tasks. Those goals that seem so far away for young students, like having a job and a family, become more defined in students’ minds if they are taught to think about exactly how to get from point A to point B. This, in addition to the high demand for programmers in the job market, is what makes programming as beneficial and thought-provoking a skill as reading. Therefore, schools should teach programming with as much care as reading, introducing the concept when students are very young and honing the skill throughout students’ high school careers.