"Every science begins as philosophy and ends as art." -Will Durant
As the semester progresses and classes are really getting to the heart of their respective subjects, I've noticed that two of my classes especially have quite strong parallels.
The two in question are Data Structures and my political philosophy class, and the more I think about it, the more I see the similarities in them. There is a certain duality to philosophy that mirrors that reminds me of the binary aspects of computer science. They both have an innate sense of balance within them, a sort of "zen" if you will.
The goal of philosophy is to develop and prove the basic concepts of existence. Platonic Forms, Aristotelian Processes, and Descartes' Dialogues are examples of trying to get the basic concepts of physical and metaphysical reality and use them to build bigger structures. Then, one would try to build on top of those basic principles to prove more and more complex ideas, which (hopefully) corresponded with reality.
Computer science is about programming languages, algorithms, structures. From those basic parts, we develop applications and new technologies. It teaches you to think about how to build modular, scalable projects that follow a specific logic while still being organized, easy to understand, and reusable.
Philosophy enhances the kind of thinking required to be clear, analytical, and concise. Similar to addressing engineering problems, you break down vast, intractable problems into smaller parts and develop methodical solutions, typically working on a level of abstraction. At the core of both these disciplines is the basic concept of taking small pieces of the problem and build on top of it to get a solution, and it's really fascinating to think about how two disciplines so seemingly varied in subject matter can actually be so similar. It also solidifies the argument that studying both in conjunction is especially beneficial to both your studies and you as a person to become more well-rounded.
Almost all the award-winning computer scientists of old weren't computer scientists at all -- they were either mathematicians or philosophers. Which makes sense because computer science is the perfect combination of the two disciplines, and why there are so many identical aspects in CS and philosophy. There’s a wonderfully strong parallel between building and testing arguments and doing the same for code.