Up Goer Five

Consider the following problem: given a particular Shakespearean work, rewrite it entirely using nothing more than the 100 most common words in the English language.

The problem is daunting: Shakespeare invented a considerable amount of modern English (especially idioms), and so replacing the phrases that he himself pioneered with something more mundane can seem like an extraordinarily difficult task.

To deconstruct this problem, you have to first ask yourself what it means to rewrite the work. Do you rewrite every word, replacing them as you go with synonyms in our master list of acceptable words? Probably not: words are rarely islands. Instead, to reconstruct anything, you must start by reconstructing larger constructs, like clauses, phrases, sentences, or paragraphs.

As you go along, you may begin to notice that a lot of ideas are repeated. Maybe they employ different wordings (or maybe they’re stated in identical fashions), but the core concept Shakespeare wishes to convey remains the same. Rather than reconstruct each phrase, then, maybe it’s easier to come up with a mapping of these common ideas to certain phrases from our list of acceptable words.

This implies that we need to solve another problem: how do we isolate ideas? Like so many important questions, this one has no one correct answer. Different people may, with equal credibility and correctness, isolate different ideas and reconstruct them, and yet arrive at the same general theme.

So, from a mechanical problem of word replacement, we discover an art form: the art of idea isolation. Different styles exist for isolating ideas: indeed, art history is made up of different isolations of the same concept. For example, Augustus Koch’s 1887 map of Austin, arguably a piece of artwork, and Picasso’s Guernica, one of the most famous works of modern art, are effectively both representations of cities—Austin and Guernica, Spain. To say the idea of a city is isolated in each painting differently is something of an understatement.

Computer science is the study of solving problems. Some, like the Halting Problem, cannot be solved, but can be proven unsolvable. Others, like the Knapsack Problem, have solutions, but are particularly difficult to find. Still others, like the problem of sorting an array, have multiple, easy solutions.

Because we isolate ourselves to the realm of computers, it is easy to look at the field and conclude that there is no art to be found. Indeed, artistry is most obvious in fields where there is no single correct answer, such as music, philosophy, and government. Yet in computer science, most—if not all—problems have one single correct answer (and in fact can be proven to have to this property).

Spend a day writing code to solve a problem, however, and the opposite will begin to seem true. There are limits on computability, certainly, but those seem meaningless or nebulous in the face of a concrete problem, like fixing a bug or building a user interface. Instead, the problem statement becomes a wall around a massive enclosure, and while you must enter and exit the enclosure at predetermined points, there is a tremendous amount of space to travel in between those two points.

To everyone else, all that is apparent is the wall. To programmers, all that is apparent is what exists in the wall. The latter concept—the things the programmer creates—is the art of computer science.

Deciding how to lay the path for the computer to travel inside the enclosure is precisely the art of idea isolation. An infinite set of solutions exist, some more appropriate than others, but once you break down the problem into smaller and smaller problems with known solutions, the larger solution becomes more apparent.

Many people maintain the belief that computer science is devoid of art. More worrying is that even those who have tried solving these problems—those who have been inside the enclosure and have had to decide how to create the path from the entrance to the exit—maintain this flawed belief that computer science is not an art.

In fact the opposite is true. One of the interesting lessons you learn in art classes is that to be able to paint an object you must be able to see it as a collection of lines and colors and negative spaces, and not as the object itself. In music, this is similar to singing a melody without thinking about the constituent notes and instead focusing on the tune itself.

There is a mindset that can be developed to better this skill—of looking without seeing, of observing without identifying. Years of voice and piano lessons have made me somewhat capable of observing the world this way. To many, it defies explanation—why resist our most potent skill as humans, of drawing patterns from data?

Yet—and this is anecdotal—I’ve found that when I try approaching problems in computer science and mathematics with this mindset, when I let my intuition roam freely rather than try to limit it to the theorems and proofs with which I am familiar, I inexplicably find myself seeing the solution more clearly. It doesn’t always persist—in fact, as soon as I try to make any sense of it, it disappears. But if nothing else, it provides me with a glimpse of insight.

I don’t know whether this scales, or even if others feel the same way. But certainly the underlying principle remains true: computer science is an art form.

Try treating it as such.


The views, opinions and positions expressed by the authors and those providing comments on these blogs are theirs alone, and do not necessarily reflect the views, opinions or positions of UT Computer Science, The University of Texas or any employee thereof.