Maybe you’re interested in learning computer science. Or maybe you would like to learn programming and CS seems to be the career best suited to improve that skill. However, all too often, we can’t really explain what CS is. For example, we have all studied mathematics for years but we might not be able to precisely define it. In this post, I will try to give a simple definition of computer science and how computational thinking is related to it. I’ll follow the ideas by Jeannette Wing (more at further reading).
What is Computer Science?
Computer science (CS) is the study of computation. It tries to answer what can be computed and how to compute it. As most sciences, it draws from mathematics for its foundations, obtaining from it the necessary tools and language. It also overlaps with engineering, as CS has to do with the “building” of some products that are subject to constraints and optimization.
This “product” is software. And this is where CS differs substantially from engineering branches because software is, we could say, immaterial. No factories are required to produce it. It’s easy to disseminate, to alter, to copy, etc. More surprisingly, even though software is supported by tools (say computers) subject to our physical constraints, software isn’t limited by it. We can even recreate different physical laws with it.
What is computational thinking?
Computational thinking is thinking in a way that allows computers to solve problems. It has to do with both how we formulate a problem and how we solve it – the steps to do it. The “computer” can be human or machine (in the past, a “computer” was someone who performed calculations). Some problems, or parts of them, are better suited for humans, others for computers. It’s important to recognize this in order to effectively solve problems.
Computational thinking is not about “thinking like a computer”. Rather, it’s about bringing all of the intelligence and imagination of humans into computers to make them solve problems.
It involves four aspects:
- Decomposition: Dividing a problem into smaller parts.
- Abstraction: the mental tool of taking out some elements of analysis while focusing on others.
- Pattern recognition.
- Algorithms: the steps followed to solve a problem.
Computer science in other fields
More than using computers as a mechanical tool to perform calculations faster, CS has actually modified the understanding and application of other sciences. Just to mention a few examples, CS has allowed statistics to analyze huge sets of information (big data), requiring methods different to those used to analyze data traditionally. In biology, the Blue Brain project tries to understand how the brain works using computer simulations.
Computational thinking is what we do even before we start writing code. It’s about the mental processes used to define a problem in such a way that it can be computed. Computer science approaches problems differently by analyzing the “how” to solve a problem, which also leads us to the “how fast”. Even before that, we might just start by asking, could this be computed?
References and further reading:
- Computational thinking and thinking about computing. (conference)
- What is computational thinking? (with Jeannette Wing)
- What is computational thinking? (with Linda Liukas)