Foundations & earlier writing · March 30th, 2019
What is Computer Science
Computer science is a hot field within the broader STEM domain. Traditionally, computer science is the degree we pursue when our parents tell us to study computers. In this essay series, I want to speak with those of us wondering if computer science is the field for them, for those on the degree pathway wondering if they should remain, or even for those of us with the degree wondering what the hell we should be doing. We need to establish some definitions if we're going to have a proper conversation. Thereafter, we can begin to construct an answer to the question: what is computer science anyway?
Computer science is not software development
Let's tackle the easy part first. I would argue that computer science is not learning to develop software. Developing software is a business function and is best examined in the context of computer information systems or business application development. Even game development would suit us here. However, again - I do not view the field of computer science as necessarily being the study of developing software.
Fine. But you learn to program, don't you? someone will ask. Yes. As a means to an end though, not as the end per se. Developing software is an end whereas programming in computer science is simply a tool. There's overlap but there's a fundamental difference.
We can break this down further.
Computer science is the science of computation
I think science is a term we're familiar with coming into this discussion. For completeness though, I'd suggest that science in our context simply implies a form of the systematic process applied to a given topic. Cool.
Next, we ought to wonder what computer means since this is where the confusion stems from I believe. To be clear, we're not directly applying our systematic process (science) to computers such as the one I'm writing this essay on. Rather, science is applied to computation. To clarify: computers are the embodiment of a concept which we can refer to as computation.
Yet, even computation is a little messy as a term though. We need to disambiguate computation if we're to avoid confusion and mistakes in logic later on. Specifically, we need to distinguish computation from information processing.
Computation and information processing are not the same thing. On the one hand, computers process information. That is, computers change information from one form(at) to another, presumably to make such information either transferable or consumable by a computer user. On the other hand, computation is a mapping or relation between an input and an output. Thus, if anything computation is synonymous with function in the mathematical sense and only loosely synonymous with information processing based on a computer's embodiment of computation to achieve information transfers, information formatting, and so forth. Computer science can be explained as a field that studies the systematic process of computation. I think that's the correct way to think about this but I recognize such a definition is somewhat unsatisfying. Here's another way to look at this: computer science seeks to solve problems through the application of computational principles.
Computational principles and problems
Okay, if computer science is a discipline wherein we learn to solve problems using computational functions, a well framed follow up would be to wonder about these principles, perhaps their limitations, and the problem space within which we can apply such principles. These seem like fantastic areas to explore going forward.