Editor’s note: Opinion columnist Keshav Tadimeti has a few words to say about computer science at UCLA. This is the first in a weekly blog series explaining the ins and outs of what’s taught in Boelter Hall.
My name is Keshav Tadimeti. I am an American-born Asian Indian. I also happen to be a computer scientist.
Before you jump to conclusions – no, I don’t spend all of my time staring at a screen, I don’t know how to hack into your next-door neighbor’s Wi-Fi and I definitely won’t fix your broken iPad.
Basically, I’m not the IT guy. But those are just a handful of the many misconceptions people unacquainted with computer science tend to have about computer scientists. It’s almost like we’re another species, eliciting excessive respect and sometimes even complete befuddlement from those who can’t seem to wrap their heads around the idea that just because we can code and change the boot sequence of a computer, we’re not regular people.
Computer science students are often asked by friends and family to fix technological problems they may have, from setting up a network router to backing up a corrupted memory hard disk onto a CD. Apparently, my major lets me magically solve people’s technical problems, even if I haven’t been explicitly trained how to do so. It seems like the field is shrouded in esotericism. That impression, however, is really just a mirage.
The computer scientist in all of us
Computer scientists are obsessed with solving problems. That’s because computer science is wholly concerned with problem-solving. A glance at any piece of software will show you this.
Take Microsoft Word, for example. To put it simply, it’s a stylized text editor with aesthetic capabilities. Take away all the technical features and graphically aesthetic fluff, and at its core, it solves the problem of converting keyboard strokes to words on a page in a presentable manner, and then converting that digital page to a physical one that can be printed out.
Of course, it’s easier to explain how to solve the problem of creating a text editor than it is to actually create one. But that kind of viewpoint lends itself to people outside the field thinking that computer scientists solve problems in seemingly inaccessible ways.
I beg to differ.
Consider the situation in which you want to bake a cake, but have no prior experience with any kind of baking. Naturally, if you wanted to bake the cake yourself, you would require a very specific, step-by-step set of instructions that would include things like what specific ingredients are needed for the cake, what the proportions for each of those ingredients are and what oven settings are needed to bake the cake batter.
Solving a problem in computer science is no different than writing that specific set of instructions for baking a cake. When solving a problem with a computer, the computer requires a specific set of step-by-step instructions, like a recipe, for what resources to use and what actions to take. Computers, however, work through binary interpretation, and natural languages (e.g., English) aren’t suited for that. So computer code, or just “code” for short, is used to write the set of instructions, or algorithms.
At a fundamental level, computer science is concerned with this algorithmic, or recipe-like, problem-solving. And as with any form of problem-solving, there are always more optimized and efficient solutions to solving the problems at hand, which give rise to complex algorithms for accomplishing things, such as sorting or searching through extremely large sets of data in a timely manner.
In this regard, there’s a computer scientist in all of us – someone constantly searching for ways to solve problems efficiently without exhausting too many resources. That’s why we’re able to, for example, map out efficient ways to drive to the grocery store without using up all the gasoline in our cars. It’s not like we innately acquire these navigational skills; rather, we learn it through educational settings and refine it through practice.
The beauty of computer science
With the increasing digitalization of the world, the demand for people with technical computer science knowledge is constantly growing, be it for providing technical support to the wide base of everyday consumers or coming up with better solutions to currently existing software problems.
The specialized demand of technically demanding jobs is inevitable in any field and computer science is no exception. But where people mistake themselves is in thinking that all of computer science is esoteric and reserved for those who can code in 15 different languages in their sleep.
The beauty of computer science is that it’s accessible, perhaps more accessible than any other field. The mobile application, “app,” industry is evidence of this. Building an app, coding aside, boils down to having a creative idea to solving a problem. The actual coding of the app is not as complex as one would expect, given that there are plenty of resources to fall back on, thus letting individual creativity take the center stage.
Just take a look at apps like Uber and Lyft. The solutions presented in these apps sprung from real-life problems facing people, not from coding errors. Of course, some level of technical knowledge was needed to build these apps, but the essence of these solutions is grounded deeply in the natural creativity and ingenuity of people, not in their coding skills.
Hence, practically any person with an adequate orientation to coding and thinking algorithmically can understand computer science, so long as they put in the time. And it’s from this understanding that they can do remarkable things, like streamlining the pizza ordering process or providing aid to people with disabilities. All it requires is just a bit of creativity.
I think the author is slightly confusing programming with computer science as the same things, where in reality programming is only a small subset of computer science.