What is Computer Science?
Computer science is a hot field within the broader STEM domain. To many, computer science is the degree we pursue when our parents tell us to study computers. Computer science might be the only choice in some institutions of higher education. I’ve found this true especially when there is no IT or MIS offering.
I want to speak to three groups of people. First, those of us wondering if computer science is the field for them. Second, those on the degree pathway wondering if they should remain. Last, 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. Then, 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. Developers exist in computer information systems or business application development. To be clear, I am including all software development. Games. Machine Learning. Web applications. Yes, all software development. 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, an answer to a problem. Whereas programming in computer science is a tool. There’s overlap but there’s a fundamental difference. We can break this down further using the phrase computer science.
We can break this down further using the phrase computer science.
The semantic of computer science
Take science as a term. Science, to me, implies a systematic process applied to a given topic. Cool.
Next, we ought to wonder what computer means since this is where the confusion stems from. To be clear, we’re not applying our systematic process (science) to computers. Rather, science applies to computation. To wit: 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. We can 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. Doing so presumably makes the information either usable by a computer user. But, computation is a mapping or relation between an input and an output. If anything computation is synonymous with functions in mathematics. The overlap with information processing is indirect.
Computational principles and problems
Computer science is a field that explores the systematic process of computation. That’s the correct way to think about the computer science semantic. That said, I recognize such a definition is somewhat unsatisfying. Here’s another way to look at this then. Computer science seeks to investigate problems using computational principles.
A well framed follow up would be to wonder about these principles. What are their limitations? What is the problem space within which we can apply such principles?
These seem like fantastic areas to explore going forward.