Abstraction is a process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the problem. This process creates a new representation that successfully reframes the problem. At the most basic level of abstraction, data structures are used to represent information so that algorithms can operate on the data to create a result.1
Abstractions can be thought of as shorthand generalizations. For instance, even babies learning language will identify "dog" as a creature that walks around on four legs, barks, and likes to lick. Initially, toddlers may call any four-legged creature a dog, but eventually begin to distinguish dogs from cats, cows, and other four-legged animals.
Another example is "get ready for school." That statement can be understood to mean a list of activities, such as eat breakfast, get dressed, and pack your backpack. Since the steps taken to get ready for school do not vary much each day, it is useful to refer to them as one broad statement, and the smaller tasks needed to complete this bigger task are generally understood.
Product (concept, system, or object): a higher-order classification (such as "person" or "car") that is used to identify a collective set of attributes common to everything within that classification.
Process: a set of steps (such as in an algorithm) that can be grouped, usually because they will be repeated, to reduce complexity of the overall process.
Data: classifying and organizing data into groups and hierarchies.
"Dog" is an abstraction: it represents a whole bunch of different kinds of creatures, but all with a particular set of features (or attributes) in common. The usefulness of the abstraction means one can label something "dog" and a long list of attributes can be assumed—one need only list unique attributes to identify any particular dog. To that end, any word can be considered an abstraction of an idea.
Mathematical symbols are also kinds of abstractions children encounter early. The expression 2 × 5 is an abstraction of 2 + 2 + 2 + 2 + 2: it is a way of expressing something more simply. Similarly, 23 is an abstraction of 2 × 2 × 2. Later, the use of variables and equations are ways of abstracting complicated word problems: they focus on the essence of the problem at hand, and strip away extra information that isn't needed, and may distract from, the process of solving the problem.
To understand abstraction, it is helpful to understand the idea of attributes: a quality or feature of something that characterizes or identifies it. With relation to abstractions, there are two kinds of attributes: those that are part of the group (and inherited by anything that's part of that group) and those that uniquely identify a particular member of the group. So, for instance, attributes of a dog include those that all dogs share (walks on four legs, has a tail, is a carnivore, etc.) and those that may be unique to a particular dog (has a brown curly coat, knows seven tricks, weighs 24 pounds, is named Ginger).
Product abstractions are central to building both physical and digital models. Particular attributes are selected to include in the model, based on what the focus of study is. The model is a representative of the abstraction. In computing, the concept of product abstraction is central both to database design and object-oriented programming.
Abstraction is a complicated idea, which is further complicated by how we commonly use and think of the word abstract. Often, we think of things as abstract as being complicated or obscure. It is best to limit using the term, especially with younger students, when identifying "simplifications" or "generalizations." So saying dog is an abstraction for "four-legged slobbery creatures that we keep as pets" is good. But avoid saying things like "the list of attributes you came up with is an abstraction of what a dog is."
ensure students can identify key attributes of various objects or phenomena (a bicycle has two wheels, pedals, handlebars, and a seat)
have students group objects that share some attributes, and label the groupings (some vehicles with two wheels are bicycles, some are motorcycles) and identify which attributes differ between the groups
encourage students to identify attributes of individual objects within a group that differ between members of the group
Solving large problems can be overwhelming. A useful skill to learn is how to break down large problems into smaller pieces that are each easier to keep track of and solve. This process is sometimes called problem decomposition. Some of these smaller pieces may be tasks that are performed over and over again, so it may be useful to group them together and give them a name.
For instance, think about the process of drawing a square. You could say
Draw in a straight line for 10 units, turn right 90 degrees, draw in a straight line for 10 units, turn right 90 degrees, draw in a straight line for 10 units, turn right 90 degrees, draw in a straight line for 10 units.
By recognizing the pattern, you can simplify these steps by saying
Do the following 4 times: draw in a straight line for 10 units, then turn right 90 degrees.
This simplification is an abstraction of the longer list of steps: you understand that "do the following 4 times" is an indication to repeat the steps without having to write each one of them out. The result is the same—in fact, the steps actually followed are the same—but the way they were given are shorter and easier to keep track of. The purpose of creating the abstraction is to have simpler instructions for us to write (and read), but they don't change what actually has to happen to complete the task. The same applies when considering how a computer runs a program: the programming language syntax and shortcuts provide efficiencies for the programmers, but the computer does the same amount of work either way.
This idea of abstraction can be taken a step further: you could name these sequence of steps something like "draw a square." This newly defined command, draw a square, is an abstraction for all the steps it takes to actually produce the square. The benefit is that a programmer can use this command without having to worry (or even know) what happens inside of it.
The idea of process abstractions is important in the basic foundations architecting computer programs, from determining algorithms to identifying functions, procedures, and application programming interfaces. It also is helpful in understanding how functions work in algebra.
have students practice breaking down larger problems or processes into smaller chunks
encourage students to notice patterns of repetition when performing tasks, and to think about alternative ways of describing the tasks (such as "do this 5 times" or "keep going until you run out")
explain how some simple requests (such as "sharpening my pencil" or "putting on my coat") involves a bunch of individual steps, and that the names represent (are an abstraction of) the steps needed to complete the task