"Hello World." I remember the immeasurable, heart-felt joy when my first computer program ran, displaying those two simple words. It was the 11th grade and I had decided that since my high school didn't have any sort of computer science or programming class, I'd just read and teach myself. But why didn't my school have any such class?

If we learn writing for communication, history for hindsight, math for logic and other sciences for understanding the natural world, then we should learn computer science to engage with the technology that dominates our current world. Many people believe that computer science requires advanced knowledge of math and highly developed theoretical thinking-but this is false. Computer science actually has very few prerequisites, just an open mind. In fact, computer science is so different from most things we learn in school that the lens it offers is unparalleled in today's world.

Despite the common misconception, you do not need deep understandings of theoretical math or binary arithmetic to study computer science. There is definitely a place in computer science for higher math but its heart lies in something fundamentally simple-figuring out the best ways to solve problems given a set of constraints.

This is no euphemism or oversimplification. I agree that this sounds far less exciting than the romanticized computer science of laptops with green-text windows hacking into defense mainframes within seconds, but this is what it's actually all about. Computer science simply provides a new way to analyze familiar problems and is accessible to people of all ages, not just college students.

In computer science, seemingly intuitive problems can often have interesting solutions. Contrary to popular belief, computers are actually really stupid, but they are really good at following instructions. With that fact in mind, solving problems takes an interesting twist.

Take the problem of searching for a particular item in a list of sorted items, like finding a word in a dictionary. It turns out that to find the word "rupture" you can't simply tell the computer to "turn to the r section." Telling the computer to search every entry from the beginning until it finds "rupture" could take a really long time.

Instead, think about how to answer when someone says, "Guess my number between one and 100." We simply guess 50, and if they say larger, we guess 75, smaller and we guess 25. We keep cutting the possible ranges in half until we find the right number. That's exactly what the solution to this problem is. We call it "binary search." To find an entry in a dictionary with 1,000,000 entries using the first proposed method of starting from the beginning and searching until we find the right one would take 500,000 tries on average, but using binary search only takes about 20.

Another famous concept from computer science is recursion. Imagine you're standing in a huge line to get into an amusement park and you want to figure out how many people are in line. You could try counting it all yourself, but that would be pretty hard to do if the line were comprised of 100,000 people. We call that an "iterative solution." The "recursive solution" is a bit savvier.

Instead, you just ask the person in front of you, "What position are you in?" Presumably that person doesn't know either, so he asks the person in front him, who asks the person in front of her, and so forth. This goes until it gets to the front of the line, where the person there declares that he is in position one, then the woman behind him knows that she is in position two and so forth, all the way back to where you're standing. Being able to think in this way offers a lot of practical and interesting insight into other real-world problems.

Computer science can be taught at younger ages through programming languages developed specifically for learning. One such language is Scratch, developed at the Massachusetts Institute of Technology. In Scratch, you don't even have to type any code or syntax. Instead, you just drag blocks together that each correspond to particular actions. You can create games, movies or whatever else you want. Students are able to focus on key programming concepts and constructs without dealing with the seemingly complex machine grammar of a programming language.

If we expose younger children to this kind of thinking earlier on, imagine the possibilities. Interdisciplinary connections can easily be drawn to countless other subjects. Linguistic morphology and syntax, for instance, represent underlying sound and phrase structure with tree structures that are nearly identical to how computers often represent data. Linear algebra defines vectors and matrices in such a way that begs a comparison to another way computers store data called "arrays."

In this day and age, everyone can and should apply computer science to other aspects of their lives. We should all say "hello" to the world of computer science.
*