Abstract

Abstraction, or the process of generalizing ideas by understanding examples, is an indispensable tool in the engineering process. Humans are privileged in our ability to relate physically distinct concepts through their common qualities, which allows us to translate problems from one domain into another. For example, a complex dynamical system such as a computer chip can be viewed at several layers of abstraction, each hiding the layer underneath, so that designers need only comprehend one level of complexity at a time. As one of the general principles driving human thought, abstraction plays a vital role in both engineering and everyday life.

Introduction

Abstraction is defined as “the process of considering something independently of its associations, attributes, or concrete accompaniments” (Simpson and Weiner, 1989). Curiously, the definition is itself abstract: the details of this “process” are omitted. The reader may ask, “How is this process executed, and who is executing it?” While some might think humans are the only beings capable of abstract thought, research has shown that a number of animals exhibit modes of higher-order thinking (Griffin, 1984), such as symbolic communication and “number sense” (Dehaene et. al., 1998). It would appear, then, that the ability to view the world from a non-literal perspective is evolutionarily advantageous. Indeed, abstraction has been a useful tool for humans throughout history, and without it modern society would not exist as we know it.

Examples and Implementation

Historical Examples

The application of abstract models started at least as early as the initial development of writing systems. Cave drawings and carvings are considered the earliest precursors to modern writing, dating back to 35,000 B.C.E., while more organized and language-oriented systems emerged with the Sumerians, Chinese, and Mayans around the same time in 3000 B.C.E. (Senner, 991). Written language is an abstraction in the sense that physical ideas—like “person x is y” or “it’s raining outside”—are translated into symbolic patterns, which only have meaning people familiar with the language. Having enabled the development of vital information repositories like books, symbolic language has revolutionized the way humans communicate remains a cornerstone of society.

Formal mathematics is another ancient abstraction. During the first dozen centuries B.C.E., the Babylonians, Egyptians, and Chinese all had their own system of arithmetic and mathematical symbology (Krantz, 2010). As evidenced by the extensive writings on what we know as the Pythagorean Theorem (, where  and  are the legs of a right triangle and  is the hypotenuse), these ancient civilizations used arithmetic and geometry to design structures. In essence, the ancients abstracted physical structures into lines and angles, which allowed them to use math to design stable buildings. The groundwork laid by these civilizations led to Greek mathematics, which further transformed the discipline into a more recognizable form by introducing formal logic and proofs. Today, math is a vast subject with many subdivisions, each with their own application to real-world problems, making it arguably the most important abstraction contributing to our success as a modern civilization.

Abstraction in Modern Life

Whether or not they are aware of it, people rely on abstractions just to get to work in the morning. Consider Alice, the typical daily commuter. At the start her morning, Alice gets into her car and starts the engine by turning a key. Alice isn’t a car person, so she is unaware of the electro-mechanical chain reaction she has just started: the key turns the crankshaft, which sets engine pistons moving, which draws air and fuel into the cylinders, which gets compressed and ignited when the spark plug fires, which finally starts the engine. When she turns the key further, the car’s electric system comes on and the on-board computer begins monitoring the car’s state and controlling on-board electronics. But this complicated process is invisible to Alice: the sound of the engine and the lit dashboard are the only indications of activity under the hood. The car’s controls—ignition, pedals, air conditioning, radio, windshield wipers—are an interface into car’s internals, and abstract away all of the details irrelevant to the Alice. This allows Alice to operate the highly complicated machine with ease.

A different type of abstraction arises when Alice arrives at a traffic light. The stack of three colored lights signals to her how to behave, which relies on her having learned the symbolic language encoded in the light. Signaling languages actually permeate the roads: turning signals, lane dividers, and road signs all rely on the drivers having learned a “common language”, and collectively represent a framework of abstractions that enable traffic to run smoothly.

The list of abstractions hidden in everyday activities is endless, and from this discussion it is clear that, at least subconsciously, abstractions play a vital role in everyone’s life.

Abstraction as a Problem Solving Tool: KJ Diagrams

Open-ended problems are characterized by plurality of solutions: there are numerous, often equally valid approaches that give distinct results (Klavir and Hershkovitz, 2008). While this property can lead to a bewildering array of choices at the outset, adding structure to the problem-solving process can help efficiently narrow down potential solutions. One method utilizes an idea-organizational tool called a KJ Diagram (Ulrich, 2013), whose construction is best illustrated by example.

A team of problem-solvers considers the question: “Why don’t more Americans commute to work on bicycles?” To begin, the team will brainstorm  a list of possible hypotheses, perhaps including “Helmets cause ‘helmet hair’” or “Riding on busy roads is scary”. Each hypothesis is refined to reflect the more general or descriptive idea behind it—e.g. “Americans are couch potatoes” becomes “Many people have a hard time committing to exercise”. Next, hypotheses are grouped by similarity, and each group is given a “header” that describes the common idea expressed by each constituent hypothesis. Finally, team members vote on which hypotheses are most important, which determines which path the team will take to find a solution. See Fig. 1. In this case, the prevailing opinion is that bikes require too much effort and specialized knowledge for widespread use among commuters, so these are the issues the team would target in order to get more Americans cycling to work.

The KJ Diagram method is an abstraction that imposes structure on the latent factors influencing the problem of interest. Ideas are gathered, labeled, grouped, and ranked to reveal the patterns and connections among them, which helps humans make organizational sense of the huge number of hypotheses proposed, and enables development of a solution that targets the factors that matter the most.

Case Study: Computer Architecture

A prime example of modern application of abstraction is the design and manufacture of computer chips. No one person could ever hope to understand every low-level detail of a modern computer system. For this reason, microchip companies break the design process into a hierarchy of subsystems. See the work of Popovich (1998) for details on the summary below.

Levels of Abstraction

System-Level

ECE_SHP_Figure1_Version1_03252014_JohnPothier

Figure 1

Example KJ Diagram. Stars indicate team votes on importance. Source: Ulrich (2003).

At the highest level, a computer system is viewed as a collection of inter-connected components, each with specific uses. At the minimum, the system will include a central processing unit (CPU), memory units (RAM and a hard disk), and input/output ports (Figure 2). Each one of these units is an ecosystem by itself.

Block-Level

ECE_SHP_Figure2_Version1_03252014_JohnPothier

Figure 2

System-level description of a computer. Source: http://www.csee.usf.edu/~christen/class7/pfig1.gif

Inside any unit, the next level down is a block diagram of that unit’s major components. For example, a simple CPU (Figure 3) is typically broken down into three main components: the arithmetic logic unit, where execution of instructions occurs; the register file, where temporary data and processor state are stored; and the control unit, which controls the other three units. A diagram of at this level of abstraction is just a collection of labeled blocks connected with labeled wires: we still do not know anything about the physical implementation of any of the components.

Logic-Level

ECE_SHP_Figure3_Version1_03252014_JohnPothier

Figure 3

Simple block-level CPU architecture. Source: http://www.cs.uwm.edu/classes/cs458/Lecture/HTML/Images/cpu_block.png

Each block in the block-level description is an electric circuit, and at the logic level we begin to see how this circuit is constructed. Recall that every wire inside a digital circuit (like a CPU) will be either a logic ‘1’ or logic ‘0’. This terminology refers to the voltage on that wire. The logic-level diagram consists of circuit elements called logic gates, which represent sub-circuits that perform Boolean logic on its inputs. For example, a two-input AND gate (Figure 5) takes two wires labeled A and B, and the output is the result “A AND B”, which means output=’1’ when both A and B are ‘1’, and output=’0’ otherwise. The logic-level diagram is comprised of many of these gates. This representation closely mirrors the actual physical structure of the circuit, but is still an abstraction since it only describes the logic used to construct the circuit, not the physical components used to implement that logic: what is connection between these diagrams and a computer chip?

Transistor-Level

The transistor level is the first step toward the chip’s physical realization. Each logic gate becomes an arrangement of transistors, which are types of electric switches (Figure 4). Modern chips use a transistor type called Complementary Metal Oxide Semiconductor (CMOS). The details of transistor operation will not be discussed, but the importance of the transistor level is disambiguation: the transistor level design makes explicit which of the many different transistor logic structures will be used. At this level, one can talk about the circuit’s electrical properties and study the real-world imperfections that might affect operation. However, a transistor schematic is still only a symbolic drawing—what do these transistors look like?

Layout-Level

The layout level describes how the transistors are “drawn” onto the physical substrate used to manufacture the chip. This substrate is a silicon wafer, whose electrical properties are altered by an ion beam. At the layout level, designers (or automated computer programs) figure out the optimal way to place transistors and route wires so that the circuit fits onto a given area of silicon wafer and operates efficiently. The layout level prescribes full physical reality: the layout diagram exactly matches the patterns that are etched onto silicon and placed inside the physical computer system.

Benefits to Abstraction

Division of Labor

ECE_SHP_Figure4_Version1_03252014_JohnPothier

Figure 4

CMOS implementation of an AND gate. Source: http://sub.allaboutcircuits.com/images/04146.png

One immediate benefit to this hierarchical approach is modularity. Companies can assign certain people to certain abstraction levels, so that the work is easily divided in between teams. This saves the workers from needing deep knowledge of every level—they need only be concerned with the level they work at. Logic design skills are different from layout skills, which are different further from subsystem design skills. In this way, design teams can assign jobs based on candidates’ talents in specific hardware design areas, rather than general ability.

ECE_SHP_Figure5_Version1_03252014_JohnPothier

Figure 5

AND gate symbol and truth table. Source: http://sub.allaboutcircuits.com/images/04126.png

System Optimization via Subsystem Optimization

In the same spirit as labor division, hierarchy also improves optimization. Performance of a computer system is judged by a few basic factors: speed, power consumption, and cost. The impact on performance for a given modification will vary based on the hierarchical level at which the modification is made. The most gains are made at the architectural level: for example, removing a whole block component from the architecture will possibly remove hundreds of thousands of transistors, resulting in a big reduction in cost. In contrast, changes at the transistor level will have comparatively little impact, since modern chips contain billions of transistors—barring some extreme circumstances, changing only a few transistors will have no effect on performance. In this sense, optimization is done “top-down”—that is, the highest level components are optimized first to get large gains, and then subsequent levels are optimized for increasingly marginal gains.

Application to Senior Project: Machine Learning Algorithm

The Purple Team‘s project is particularly well suited to explain abstraction, since our system has two primary components: the hardware (physical system comprised of hydroponics equipment, plants, and a micro-controller) and the software (sever infrastructure and learning algorithm that control the hardware). The hardware level is the concrete entity, and the software describes the hardware via abstraction. In order to get our system to work, we needed to find the right abstraction to make this description accurate.

Physical Goal

As members of the Purple Team, our goal is to produce optimally healthy plants by (1) examining the relationship between nutrient dosage and plant health, and (2) using this knowledge to control the amount of nutrients the plant receives.

Solution via Abstraction

With our physical goal in mind, we built the following abstraction of the plant system. First, we determined that the physical quantity that effects plant health the most is the amount of nutrients it receives. We will use  to denote the daily nutrient dosage, which is measured as the amount of time the water pump is on during the day.

We also needed a way to mathematically represent plant health. Our target plant is English Ivy, and English Ivy is green when healthy and turns yellow when it dies, so we decided that leaf color is a good indicator of health. We set our health metric as “greenness”, which is measured by scanning the leaves and recording the average wavelength of reflected light. We called the amount of greenness .

Having defined all the variables, it was time to work out an algorithm for maximizing . Since our project aims to control multiple systems at once, which are all connected to each other over the internet, our approach involved aggregating data from each system and studying the trend exhibited by the collection of  and  values associated with each plant. More precisely, we used a machine learning algorithm called “online gradient descent” to optimize  for each plant using past  and  values. The details are beyond the scope of this paper, but basically our algorithm seeks the optimal nutrient dosage by increasing or decreasing  for all plants in accordance with the past values for  that produced higher .

The overarching goal of this whole process was to find an abstract model of a physical system that let us observe and control the targeted parameters in a desirable way. Our model does not consider countless other parameters, like temperature or humidity, but we did not consider these important enough or thought they introduced too much complexity into our model. The beauty of abstraction is we can efficient describe and analyze an overwhelmingly complex system—a living organism—in simpler terms, which allows us to do meaningful work without understanding every detail.

Cited References

Additional Sources

See Also

Tagged with: