Is computer science hard?posted on 21st August 2019
I often see computer science likened to maths. There’s some truth in the analogy, but it’s not a very helpful one when it comes to figuring out whether and how to study computer science. It doesn’t mean that if you find maths hard then computer science will be hard. I’m afraid it also doesn’t mean that if you’re good at maths then you’ll be good at computer science, although you might find it a bit easier to get started with programming.
Like maths, the notation used in programming is strict and unambiguous. Using English to tell a computer which steps to take just wouldn’t be precise enough. Take, for example, “I shot an elephant in my pyjamas.” Like many jokes, this one by Groucho Marx depends on the ambiguity of natural language: “How he got into my pyjamas I’ll never know.” In contrast, a computer needs to be the most pedantic audience ever – but unlike maths, it will always tell you when it doesn’t understand. Like meeting someone from a different culture, over time you can learn to understand how the computer sees the world and deal with its idiosyncrasies. Everything must be to the computer’s satisfaction before a program will run so it’s easier to recognise when you are heading in the right direction if you have a reassuring guide.
Another similarity with maths, computer science needs abstraction, and it can be an unnecessary obstacle in the teaching of both. For example, mathematically:
5x + 10 = 260. Find x.
Is the same as:
I buy 5 apples and a 10p carrier bag to put them in. My bill is £2.60. What is the price of an apple?
In the second example, the point of “finding x” is clearer. It makes sense and can probably be done intuitively without thinking about any rules. It has a concrete meaning that anchors it in the real world; providing a framework within which to understand it. An abstraction of rules that can be applied to other situations can then follow. The same is true with programming; it can be harder to grasp the point of a concept without a meaning to anchor it. When teaching it I offer meaningful examples that students can relate to, working with them to find a frame of reference in which the subject makes sense. Without this frame, computer science can be mislabelled as hard.
That brings us to problem-solving. I separate what is to happen (performing a real-world task, e.g. playing a game with the user) from how it is made to happen (the program). Syllabuses use terms like ‘theory of computation’ and ‘algorithm’, which all sound rather maths-like. But for me, it’s really about one question: how do things work? When we follow this path, greater understandings are possible.
I make it safe to explore hands-on without fear of breaking anything or ‘getting it wrong’; curiosity and tinkering are encouraged. Computing concepts are part of a toolkit students can use to build a solution for real-world use. Understanding meaningful jobs that the tools can DO in practice makes the names and definitions of theoretical concepts more salient and so much easier to remember.
So, is computer science hard?
Even when the reasons for using them make sense it does demand a degree of focus to understand and apply the concepts. Every student’s engagement with the subject is influenced by their past experiences and their interests, so it really doesn’t matter how other students are getting along. My goal is to find ways of sharing my curiosity about how things work that makes sense to the individual. Learning computer science does take practice. That’s easier to do if you can see the point.
Author: Dr Gail Ollis, BSc, BSc (Hons), PhD, CITP, CEng, MMBCS, MBPsS