With a booming technology industry, there is no question as to why learning computer science makes economic sense. But did you know that computer science is not just a professional skill set, it is also great training and preparation for general problem-solving?
Even if you don’t plan to become a software engineer, there are many great reasons why you should still learn computer science. Today we will touch upon a couple.
In late 20th century, the most fundamental shift in our understanding of human cognition and learning is that we no longer see knowledge as rigid chunks of information to be memorized; instead, knowledge is a powerful building block that shapes human information processing, it enhances the way we analyze information and in turn impact the way we learn new knowledge, and ultimately, the way we observe and interact with the world around us.
Therefore, disciplines such as English, History, Science and Math, once treated as a mere laundry list of “things to know”, are now understood to have profound effects on our abilities to express ourselves, analyze information and solve problems. In other words, we learn these core topics not just to know when the United States was founded, or how long it takes for a ball to hit ground from 10 meters above, but to become better general problem-solvers and learners.
Take physics for example. Imagine a ball being launched at an angle from the horizon with velocity v, what is the ball’s vertical distance above the ground at time t?
Well, typically calculating – ½ g t^2 and v t given the values of g, v and t is a very simple and mundane mathematical calculation after substituting in the values for the variables.
However, physics introduces the logical knowledge of modeling real-world situations mathematically. – ½ g t^2 describes the distance travelled if the ball is only under the effect of gravitational deceleration, whereas v t describes the distance travelled if the ball is traveling at constant velocity. Since the ball is launched at an initial velocity but is also under the influence of gravitational deceleration, to calculate the distance of the ball above the ground we must sum the two distance vectors.
In a way, mathematical formulas are building blocks to modeling the physical world, much like the way the English lexicon is the building blocks used to create expressions in English.
Computer science is no different in that regard.
As renowned computer scientist Edsger W. Dijkstra eloquently put, “Computer science is no more about computers than astronomy is about telescopes” The offshoot here is the broad, universal applicability of computation beyond coding a program on an electronic device.
Computation in broad terms can be understood to be manipulation of mathematical objects, or simply put, it is manipulation of quantity, sizes, shapes, and different quantifiable properties of objects. For example, one of the earliest computational techniques called state machines, are simply conceptual frameworks to break down a complex task into series of smaller steps. For instance a complex task to assemble and ship a toy car may be broken down into:
inject plastic into car mold -> cool the molded plastic car -> spray paint the car -> install four wheels -> place in packaging -> place package in shipping container
As you may have guessed, this computational technique was used to model assembly lines in factories to plan out how a complex product can be assembled by a series of people each doing one simple task in sequence.
If an assembly line seems too specific of a use case for a layperson, well, consider folding a pile of clothes where you need to fold the sleeves towards the center of a shirt, then fold the bottom of the shirt towards the top, turn the shirt over and then place it neatly on the stack. This is a four-step process that can be performed by either a single person completing four actions, or four people each completing one action in sequence. As the shirt folding operation scales up, one can either have a four-person team perform faster, or have multiple four-person teams work in parallel.
Describing a way to perform a task as a series of steps, is also known in computer science as an algorithm. This shows that computer science is simply an expressive, powerful and flexible framework for describing problems and how to solve problems.
Aside from writing algorithms, data structures, which are structures used to organize objects to be manipulated, are also fundamental to computer science.
So why do we need to organize objects that we want to manipulate?
Well, again, let us think about handling a pile of clothes.
When you are at a coat check, you deposit a number of items and the clerk gives you a number for each item. With each number, you are guaranteed to get one particular item back. This sort of recall of any particular item in the collection, is called random access in computer science.
Now suppose you have a stack of nicely folded shirts, and you want a particular shirt in the middle of the stack. To avoid a collapse, the wise thing to do would be to remove each shirt from the top until you get to the shirt you want. This sort of organization of objects, is, well, also called a stack in computer science.
What if you organized all your shirts so that for every given shirt, each shirt to the right is a shade darker and each shirt to the left is a shade lighter. Suppose you are looking for a specific shade within the shirts, you can find the shade quickly because the shirts are sorted, in computer science lingo.
Surprising, isn’t it? These properties of objects, or data, are applied on a daily basis to help us complete tasks more effectively and more efficiently, and most of us don’t even realize that we are applying these techniques.
Computer scientists don’t just walk through a city, they understand the time cost of taking different paths and try to find routes that are shorter and faster. Computer scientists don’t just cook, they understand that while heating up the oven and marinating meats they can also peel potatoes so they can optimize cooking time.
The truth is that most of us are subconsciously writing computer programs everyday.
Computer science only serves to make our general problem-solving processes explicit so we can further the development of our abilities. Learning computer science is like finally learning the word “red” to name and communicate a collection of colors many of us have been seeing since birth.
With English we teach students to express themselves verbally. With social studies we teach students to think critically about social interaction. With science we teach students to form hypotheses and to verify or to disprove them. With math we teach students to describe dimensions of the physical world.
Finally with computer science, we are teaching students the fundamentals to any creative activity – the ability to observe problems and formulate solutions. To invest in computer science as a new core subject is to invest in a future of better thinkers and creators.