Massachusetts Institute of Technology: Chris Terman's "Basics of Information" and "The Digital Abstraction"
Watch these lectures. These videos are part of another course. For our course, focus on the hardware hierarchy introduced in the first 20 minutes of lecture 1 and the first 34 minutes of lecture 2. These videos reinforce the concepts of modularization, abstraction, composition, and hierarchy, but it does so by stepping 'aside' to take a look at computer hardware.
Take a look at your computer and imagine disassembling it, piece by piece, or to use our terms, module by module. The modules you initially get are relatively large; and you continue, disassembling, i.e. decomposing, those modules into smaller ones. You continue the decomposition until you obtain what seem to be unit modules, which you cannot decompose without breaking them.
Now imaging going in the other direction; namely, starting with the unit modules, composing them to build larger modules, until you arrive at a computer. What you have done is transverse the hierarchy from the computer to its unit modules, and, then, traverse the hierarchy back up, from the units to the computer. Each larger module is an abstraction of the smaller ones that compose it; the larger module can be used without knowing about the smaller ones - or it is a black box.
Now take the viewpoint of the computer software, where we have already been introduced to modularization, abstraction, composition, and hierarchy of concepts. A 'small' software module is a simple instruction; a 'large' software module is a function or a program. Now, let's imagine that on your left you have the physical hardware modules laid out in a hardware hierarchy, from the smallest to the largest; and, on your right you have the conceptual software hierarchy laid out from the small to the larger abstractions. Ask yourself: what is the connection between the two hierarchies?
The connection of interest to us is at the bottom of the hierarchies. For example, suppose a software unit is an instruction to add two integers. We note that there is a hardware unit that adds two voltages. If we encode, i.e. represent with symbols, the add instruction so that there is a correspondence between the integers and the voltage levels, such that the resulting voltage level is associated with the sum of the two integers, we will have a connection between the hardware and software hierarchies. You are familiar with encoding – you do it everyday: your idea is encoded in words of a natural language; the words are composed to form sentences, the words correspond to sounds, such that the composed sounds correspond to the meaning of the sentence. Here, we are following a similar process, but with a computer language and electrical encoding, instead of a natural language and an audio encoding.