In this blog post, we explore why programming education should be mandatory, not optional, and how this can empower future generations to transform the world.
On February 26, 2013, a documentary premiered, fully sponsored by Silicon Valley giants and featuring an all-star cast of Silicon Valley luminaries. Its title was “What most schools don’t teach.”
“Only when people can code, even a little, can great ideas see the light of day. You don’t have to become an engineer. Whether you become a doctor, a lawyer, an architect, a farmer, or even a rock singer, this is an era where you absolutely must understand coding.”
This is a quote from filmmaker Hardy Batov. Silicon Valley stars, pro basketball players, and singers volunteered to produce this documentary to spread awareness about the importance of programming. This message goes beyond a simple advertising slogan; it is actually exerting a powerful influence on educators and policymakers worldwide. Since the documentary’s release, numerous countries have reevaluated the importance of coding education and accelerated curriculum reforms.
The significance of programming is gaining significant global prominence. Examining programming education, the US encourages a weekly one-hour coding campaign starting in kindergarten, while the UK prioritizes programming in primary and secondary schools as much as math or science. In Israel, a country renowned for nurturing talent, high school students reportedly receive education equivalent to the level of Korean universities. In Korea, programming education began for new middle school students starting in 2015. This trend is seen as more than just part of education; it is considered essential skill acquisition for survival in future society. In modern society, where digital transformation is accelerating, coding ability has become more than just a specialized skill; it is established as a tool for fostering problem-solving and creative thinking.
Why is everyone emphasizing how important programming is? To understand this, we need to grasp computers and programs. A computer can be likened to an extremely fast calculator. Its speed is beyond imagination. PCs can perform 100 million arithmetic operations per second, while supercomputers can handle 10 quadrillion operations per second. However, even such computers have a fatal flaw: they can only perform simple tasks. Operations beyond basic arithmetic and inequality checks are impossible. A computer alone can’t do practically anything. It can’t send a rocket to the moon, let alone determine if a number is even or odd. How can we launch rockets and predict the weather with such a ‘dumb’ computer? The key to solving this is what we call programming. In other words, programming is the process of instructing a computer to perform desired tasks, and the file created to enable the computer to execute these instructions is called a program.
In modern society, computers play a role far beyond that of a simple calculator. The information computers process in our daily lives is incredibly complex and vast. For example, communicating with the world in real-time through smartphone apps, or enabling self-driving cars to navigate roads and safely reach their destinations—all these processes are achieved through programming. Most of the technology we use daily is a collection of algorithms created to solve these complex problems. Therefore, understanding programming is the first step toward comprehending the inner workings of the technology we use and, furthermore, creating new innovations.
The most important thing in programming is the procedure for solving problems, which is called an algorithm. An example of an algorithm is sorting numbers in ascending order. From arranging 50 books on a shelf by their numbers to listing over 600,000 high school seniors by their scores, you can find many examples around you. Most problems encountered in daily life are easily sortable because the number of items and their values are small. However, solving this problem with a computer requires a different perspective.
Suppose 50 books are randomly placed on a bookshelf. The number of possible arrangements exceeds the number of stars in the universe. We must design an algorithm that works well for all these possibilities.
For this reason, algorithms used in programming must meet several conditions. First, if there are logical inconsistencies, it is not a perfect algorithm. Second, if it contains operations the computer cannot perform, it won’t execute. The computer cannot directly perform “Find the book with the largest number among the 50 books.” Instead, this command must be broken down into multiple steps and executed as follows:
“Set the first book as ‘the book with the largest number’” → “Compare the number of the second book with the ‘book with the largest number’ and reset the ‘book with the largest number’ to the larger one” → “Repeat the previous process with the third book” → ……. → “Repeat the process with the 50th book”
After performing all these steps, the book set as the ‘book with the largest number’ will have the largest number among the 50 books. Since the above algorithm only uses comparison and assignment, it can be executed by a computer. Furthermore, mathematical induction can be used to prove that the algorithm is logically consistent. But what happens if we skip comparing the last book? If the book with the largest number is located at the end, the result will not be the last book, creating a logical inconsistency in the algorithm. Therefore, a perfect algorithm must have clear and consistent logical progression at every step.
Computers greatly assist our lives. Yet few people fully leverage their characteristic of extremely fast computation speed. Since very few people even vaguely understand the boundary between what computers can and cannot do, truly great ideas that could be implemented often vanish from this world. Ideas alone hold no power. Without the technical capability to bring them to life, even the most brilliant thoughts may vanish unseen. Thus, learning programming is not merely about acquiring a skill; it is about gaining an essential tool to materialize and realize our imagination.
By learning programming, great ideas can see the light of day instead of ending up in the trash, and through this, we can build a better world. This becomes the driving force for advancing the society we live in. This is precisely why programming education is crucial for the generation that will lead the future. Helping them discover problems themselves and equip them with the ability to solve them is surely the ultimate goal of education.