What is abstraction in computing?
What is abstraction?
Some of the concepts and theories used in computer science are incredibly complex. As an everyday user of a computer, however, it isn’t necessary to understand how all of these complex processes work, as you are given a mouse and keyboard that allow you to access all of the functions of a computer. The process of hiding the complexity of a computer system is known as abstraction.
Abstraction in KS1 and KS2
Abstraction is a highly advanced concept that won’t necessarily be included at KS1 in the computing curriculum, however the basic principles of abstraction will be learned in Early Years regardless of subject.
At its core, abstraction is the derivation of the key features of an object without needing to know the individual details of the features that compose an object. In plain English, abstraction is a simplified view of the world, focused on looking at an overview of an object rather than individual details.
Take the concept of abstract art, defined as being art that represents the world using alternative methods such as use of colour, rather than being representations of real-world objects. To demonstrate this point, look at the following images:
You may not be able to tell immediately, but both of these (crudely drawn!) images are being used to represent happiness.
- The image on the left is very clearly a picture of a smiley face; the first thing we think about when we hear the term happiness is that this is what the human face looks like when a person is happy, therefore this image is a good, real-world representation of what happiness looks like.
- The image on the right, however, is an abstract representation of happiness. The use of colour is representing the emotion of happiness itself, here shown as warm colours. This is not a real-world representation of happiness, but we have attached the meaning of happiness to the colour itself.
You may now be wondering what on earth has this got to do with computer science!
On the face of it, abstraction in art and abstraction in computer science are two completely different things. However, when we drill down into the true meaning of abstraction in computer science, things start to become a little bit clearer.
In the example above we have represented emotion, something that isn’t a physical object, as colour, essentially drawing what we think that emotion would look like. In computer science abstraction does something extremely similar, taking something that isn’t a physical object and representing it in a way that can be understood by humans.
Computational logic is at the heart of everything a computer does, making a number of decisions that tell a computer what to do and when to do it.
- If you have ever used a computer (since you’re reading this website we will assume you have!) then you know that in order to use it, you have to first switch it on.
- Then, when you have finished with it, you will have to turn it off again.
- In order to turn your computer on you need electricity, providing power to your computer in order to make it work. Without electricity, a computer is just a very expensive paperweight.
- Through use of binary arithmetic, which is a very precise form of mathematics, a computer uses electricity to do all of the complex logic that makes it work. However, whilst electricity is a physical entity, it is impossible for a human to read the electricity in a computer and make sense of it. Therefore, to make a computer useful the electricity has to be converted to something that humans understand and can interact with. Take this article, for example. In order to read this web page your computer has connected to the computer on which this website is stored, and all of this text has been sent as an electrical signal to your computer. Then, your computer has read the electrical information and sent it to your screen, in order to display the text in a format that you are able to understand.
This is abstraction in computer science: hiding the complex methods used by a computer to work and providing an easy way for humans to use it.
In programming this is extremely important, as without abstraction every programmer would have to understand and be able to manipulate binary arithmetic, a very complex science, which would put up a very large barrier to entry for prospective programmers. With the growth of computing worldwide there has been a huge increase in demand for people able to write code and build programs. If every single one of these programmers had to understand binary arithmetic in detail then it would be very difficult to train prospective coders and we would have a worldwide shortage. Therefore, abstraction has been used to hide the complexity of writing code to make it more accessible to the everyday user.
In computer science the term "low-level programming" is a term used to describe programming languages that haven’t used abstraction and don’t hide the complexity of the code, whilst "high-level programming languages" are languages that make extensive use of abstraction to hide complexity. There are pros and cons to using both.
Abstraction in KS1 computing
Abstraction is a difficult concept to teach children about, as it is a very difficult topic to explain to most adults as well! Since abstraction does not deal with physical entities that we can touch and manipulate, it can be very difficult to wrap your head around. Therefore, when teaching children about abstraction it is imperative that there is some relation to real-world physical entities.
At KS1 abstraction is often taught with a strong link to art, often making use of drawing materials or even clay to teach the key concepts.
An abstraction activity done with KS1 students is often completed in pairs or groups. Each student is given a piece of paper and some colouring pencils and an object to draw. Before the activity is started it will be explained to the students that they have to try and draw/model their object using as few details as possible, whilst still allowing their partner to try and guess what the object is. Look at the image below; can you work out what it is?
This is of course a clock, as you may be able to tell from the circular(ish) shape and the hands stemming from the centre. There is one crucial detail missing from this drawing: numbers or any reference point for what the time is or where the hands are pointing. However, this helps to demonstrate a key principle to students, which is that you don’t need to reproduce all the individual details or parts of an object in order to understand what that object is or what it is doing.
Abstraction in KS2 computing
In some schools the activity given above will actually be used as a KS2 activity and abstraction may be entirely removed from the curriculum at KS1. If that is the case then it is likely that your child will not be learning much more about abstraction until they reach later KS2 stages or even secondary school.
Your child may be given real-world examples of abstraction to help identify what abstraction means to a computer scientist.
One example might be that of a driver in a car. In order for a driver to operate a car properly, they must understand the purpose of and how to use a number of key components: the steering wheel, gear stick, accelerator, clutch, brake and ignition. The driver has to know that pressing the clutch allows them to shift gears, and that releasing the clutch engages the wheels. They need to understand that the accelerator increases the power provided by the engine, and that the brakes are used to bring the car to a stop and prevent it from moving. They also have to understand that the ignition is used to power the engine on and that the steering wheel is used to guide the vehicle in the correct direction for travel.
Without at least an understanding of all of the things above, a driver will not be able to operate a vehicle either effectively or safely. However, by using all of the above components in a car, a driver is actually using abstraction. They can operate the car to make it move and stop, but they don’t necessarily understand that the engine runs by exploding small quantities of petrol in pistons to turn a drive crank. They don’t need to know that the brakes work by pushing a pressurised fluid through a tube to engage the brake callipers, and they don’t need to understand that the tires have friction with the road allowing the car to turn corners or continue in a straight line.
The average driver's understanding of how a car operates can be compared to the average user's understanding of computer workings.
Unless you have a degree in computer science or have worked in industry for several years, when using your computer at home you probably don’t understand how binary numbers are used to represent all of the information held on your computer. You probably don’t know much of the science behind how your computer connects to the Internet, or how data on the hard drive is passed through the circuits to be displayed as information on the screen. And the important part here is that you don’t need to, any more than someone driving a car has to understand how the engine works beneath the bonnet.
The designers of motor vehicles make them simple to use for the majority of the population, and the designers of computers do much the same thing with their machines.
If you look into the past (pre-1985), all computers used to look something like the one in the image: lots of green text on a black screen, quite difficult to use and even more difficult to understand.
Nowadays we have a much nicer visual way of using our computers, by pointing and clicking with a mouse rather than typing text on a screen. Deep down however, computers still run exactly the same as the always have, the thing that has changed is the way that we interact with them. They have been made easier to access and easier to use, allowing more of the population to get started using a computer. And this has extended to other devices as well. Think how easy it is for a very young child of even 18 months to pick up an iPhone and start playing games.
Abstraction has allowed computer designers to simplify the way that people interact with computers, which has allowed for the explosion of devices and users that we have seen in the last 20 years.