We live in a society where people like to place things into boxes: this job is good/bad; this person is male/female; this opinion is wrong/right. Things that can be clearly defined and shaded into either black or white are neat and make sense; gray areas are confusing, messy, and disordered. It is in this gray area that computer science makes itself at home.
Computer science defies easy classification or “boxing in”. It is a discipline that has structures and accepted practices, but also one that is constantly evolving and adapting to the requirements of our current technology and industry. Computer science questions often have clearly defined boundaries, problems, and rules, but also require creativity to reach the best possible solution with the most efficient and useful approach. Code is composed of many steps, structures, and sequences that are connected together in a specific order, but is aimed at robustly solving a big-picture problem, the details of which may change. Code is often written by individuals, but computer science as a discipline requires collaboration in order to create methods and products that can fit our changing needs and goals.
Computer science is an art discipline, because it encourages – even requires – that individuals express their creativity in order to find the best way to solve a problem; over time, this process of risk-taking and imaginative problem-solving leads to coding practices being more refined and useful. Computer science is a science discipline, because it requires a systematic cycle of trial, error, and observation in order to figure out what works best; computer science is never static, it is always expanding and changing as we continue to think and push our perceived boundaries. And computer science is also an engineering discipline, because it relies on some basic, measurable principles and rules (coding language syntax, x86, etc.) that provide a starting point for any new task or problem. Each computer scientist’s code is a result and an expression of their individual conceptualization of the problem at hand, foundational understanding of coding practices, and creative thought.
These seemingly paradoxical and conflicting attributes are what make the task of classifying computer science so messy; however, it is also these attributes and this messiness that make computer science so relevant and important in our world today. In my opinion, it does not matter for the practitioner nor for society how computer science is classified, because it is not the type of discipline that makes it so adaptable and modern; rather, it is how the originality of the individuals within the field, and how they share ideas with one another, are valued. Many other fields could benefit from the collaboration, idea- and information-sharing, and willingness to take risks that is seen pretty much across the board in computer science.
Computer science exists outside of any sort of “box”, resulting from the various talents, needs, and creativity of those who choose to become a part of it. It is this ability to change with our fast-paced world, derived from the contributions and ideas of the many people in computer science, that makes the discipline so essential and lucrative. Computer scientists don’t have time to hang out in boxes, because they’re too busy trying out new ideas and brainstorming new processes that will continue to push the field farther into the gray area.