Socratic Programming

The Intersection of Computer Science and Philosophical Thinking


As an active and distinguished member of my high school’s Lincoln-Douglas debate team, I have spent the last three to four years immersing myself in philosophy. You name the theory; consequentialism, deontology, virtue ethics, contractarianism, contractualism — I love it all. In fact, this summer, I read all 392 pages of Aristotle’s Nicomachean Ethics, one of his most famous works on virtue theory and epistemology. People often stare at me in awe when I tell them that reading and deliberating about philosophy is one of my main intellectual interests.

But when I tell them that I plan to major in computer science and subsequently minor in philosophy, the faces I receive are priceless. Before you start giving me one, consider the fundamental definition of computer science. I personally like the one from Michigan Technological University.

Computer science is a discipline that involves the understanding and design of computers and computational processes. In its most general form it is concerned with the understanding of information transfer and transformation.

Note that the definition doesn’t even have the word programming in it. When people consider the phrase “computer science,” horrifying images of hundreds of lines of obscure and abstract code enter their mind all at once. But, there’s a reason that almost 50% of the undergraduate students at top computer science programs like Carnegie Mellon University’s are accepted with no prior programming experience. It’s because computer science isn’t about programming.

Computer science, at its bare bones, is an intellectual activity covering the theory of computation and mathematics. Consider math, for example. Though there are clear answers to problems such as 1 + 1, other math problems require some deliberation. Maybe one has to multiply by the conjugate or multiply each side by negative one in order to reach the answer. It’s all about strategy and you really have to think about what you’re doing. The same applies to computer science. Computer science is about the methodology and strategy used to solve theoretical problems in the field of computation. Popular algorithms such as quick sort and binary search are theoretical approaches to practical problems. In fact, the page rank algorithm used by Google was just a big math equation and was later implemented as a computer algorithm and search engine.

Go to any university-level computer science class, and the professor will tell you that the objective of a hardcore computer science class such as advanced data structures is not to teach a particular programming language, but rather to instill different ways of thinking and approaching problems. In the end, everything comes down to problem solving, and things such as accuracy and efficiency are paramount concerns. Learning Java or C++ is just a side effect of the course. Of course, when you approach practical problems, then you can apply your theoretical foundation in computation and easily solve the problems.

So, why is philosophy important in the context of computer science? By first glance, it seems that philosophy is more of a subject for humanities students, which technical or engineering students shouldn’t be concerned with. I would disagree. I believe philosophy teaches you one very important aspect amidst its myriad of benefits — critical thinking.

Most philosophy papers, especially from continental philosophers like Foucault and Giroux, are extremely obscure and hard to read. It’s an art in of itself to decipher philosophy concepts. Here’s an excerpt from Michel Focault’s The Birth of Biopolitics:

The question here is the same as the question I addressed with regard to madness, disease, delinquency, and sexuality. In all of these cases, it was not a question of showing how these objects were for a long time hidden before finally being discovered, nor of showing how all these objects are only wicked illusions or ideological products to be dispelled in the [light]* of reason finally having reached its zenith. It was a matter of showing by what conjunctions a whole set of practices — from the moment they become coordinated with a regime of truth — was able to make what does not exist (madness, disease, delinquency, sexuality, etcetera), nonetheless become something, something however that continues not to exist. That is to say, what I would like to show is not how an error — when I say that which does not exist becomes something, this does not mean showing how it was possible for an error to be con-structed — or how an illusion could be born, but how a particular regime of truth, and therefore not an error, makes something that does not exist able to become something. It is not an illusion since it is precisely a set of practices, real practices, which established it and thus imperi-ously marks it out in reality.

A+ if you could read that no problem and knew what he was talking about. Don’t worry if you can’t — join the club. I used to be a part of the club, but after three to four years of reading these intellectually fulfilling essays, I’m proud to say that I will be a recipient of my self-endowed A+. By reading different philosophical papers, you start noticing patterns in the text, you begin to connect the arguments with larger concepts, and most importantly, you begin to form an attention to detail.

It’s not rocket science that those three concepts outlined above are also extremely important in the field of computer science. First, computer science is all about patterns. Many sub-disciplines, such as language technologies and machine learning all rely on complex algorithms and patterns in speech and human behavior in order to generate different responses. It’s important to recognize when these patterns occur and what to do with these patterns.

Second, tying smaller pieces of code, for example, to the larger goal, such as requirements for a software application, are extremely important. Nothing in computer science is random. Everything is done for a reason, and that reason is given by a higher authority. Maybe you’re developing an application for a company you are interning for. It’s very important that you follow the specs of what they ask for — otherwise, you’ll definitely be fired. More often than not, some professors will ask their students to write pieces of code that will do something specific. You’ll lose points if you do something random or if your code does not follow exactly what the professor asked for.

Third, attention to detail is probably the most important critical thinking element you’ll receive. Programmers often find themselves debugging their code a lot, or looking for flaws in their program that prevents it from running efficiently or even running at all. Especially in the computer courses that I’m taking right now, the amount of attention I have expended in the past trying to decipher abstract phrases and twisted concepts in philosophy has finally paid off. I’m now able to take a chunk of code and find the problem in it in a much faster manner than if I had tried before.

If not critical thinking, philosophy will at least allow you to take a different perspective on things. Perhaps after reading about the importance of human dignity and autonomy by famous Kantian authors like Professor Christine Korsgaard, you will finally understand why software engineers at the National Security Agency are doing something immoral when they collect your data without your permission and use it as a means to another end.

So, for all you high school students out there looking to make bank in the computer industry, don’t spend every living and breathing second at your university exhausting the math and science curriculum offered. Instead, ponder about the existence and essence of a table and make five new friends that study at the humanities college. If not those two, visit the online Stanford Encyclopedia of Philosophy and start browsing. Philosophy, like any other academic discipline, will be extremely daunting and frustrating at first, but the benefits you reap in terms of intellectual vitality and finesse in computer science — unimaginable.

Like what you read? Give Shrey Desai a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.