How is a procedural skill learned? Let's consider the procedure for
adding fractions, since everyone is familiar with it. (You folks interested
in corporate training should notice that procedures you will teach are
handled the same way.) Its steps include:

Procedures can be branching or linear. This is a **branching procedure,**
because different steps are used for different problems (cases). A branching
procedure always has at least one **decision step**, and every decision
step has at least two **branches**. Steps 1 and 5 are decision steps
(shown in diamonds). There are two branches from step 1. One includes steps
2 and 3, whereas the other skips them. Every branching procedure has several
**paths**
to the end of the procedure. There are four paths through this procedure:

A. Steps 1 - 4 - 5

B. Steps 1 - 4 - 5 - 6

C. Steps 1 - 2 - 3 - 4 - 5

D. What is the fourth path? Steps ___________________________

A **linear** **procedure** has no decision steps and hence no branches.
Therefore, it only has one path.
Another important aspect of procedure learning is that procedures can
vary tremendously in **size**. For example, we could identify the procedure
for solving mathematical problems of any type. Such a procedural task would
have many decision steps, which would direct the performer to different
"branches" (different sets of steps) for each kind of problem: addition,
multiplication, etc.; whole numbers, fractions, equations, etc.; and so
forth. Obviously this will be a very big (long) procedure. On the opposite
extreme, we could identify the procedure for subtracting single-digit numbers,
which is basically just one step: recall the appropriate subtraction facts.
It is interesting to note that this latter procedure would be a part of
the former.

In essence, **each step is itself a procedure** which needs to be
learned on the skill-application level. Furthermore, virtually any step
**can be broken down into substeps**. Steps 2, 3, and 6 above would
probably need to be further broken down into substeps to teach the procedure
for adding fractions. The only way you can tell how far to break a procedure's
steps down into simpler substeps (and substeps into even simpler subsubsteps,
etc.) is to first determine what your learners already know. Then you keep
breaking down steps and substeps until each is expressed at the learners'
current level of knowledge.

For the sake of simplicity, let's assume that the learners already know
enough to be able to learn from the steps as stated above. Then how is
the procedure learned? It is possible to memorize the statement of the
procedure. It is also possible to memorize one particular performance of
the procedure. Dave Merrill, in his "Component Display Theory," refers
to these as "remember-a-generality" and "remember-an-instance", respectively.
But what we really want is for the students to be able to **generalize**
to "previously unencountered" cases. This makes the task "skill application,"
or what Merrill calls "use-a-generality".

The need to generalize is based on yet another important aspect of procedures:
the amount of **variation** from one performance (or instance) to another.
Not all procedures have a lot of variation. Some procedures are always
performed exactly the same way. Perhaps the name which comes closest to
characterizing this type of procedure is **recipe**. Such procedures
are virtually remember-level tasks. "If you've seen one, you've seen 'em
all." If you've learned one instance, you've learned them all. So it has
become a memorization task, rather than an application task, even though
what you are learning is a procedure. In reality, there is a **continuum**
of procedures ranging from recipes on one extreme to very highly divergent
procedures on the other extreme. This has important implications for your
instruction, especially for divergence of examples and practice.

Generalizing is required whenever a procedure has divergence or variation
(is done differently) from one performance to another. The ways in which
the performances vary are called the **variable characteristics** of
the procedure. So, what are the variable characteristics for a procedure?
Joe Scandura has identified them as features of the **inputs** to the
procedure (the conditions under which you perform your actions). For example,
the fractions to be added are the inputs to our procedure, and they could
have common denominators, or one's denominator could be a multiple of the
other's, or the two denominators could have a common factor, or the denominators
could be none of the above. Joseph Scandura calls each of these types of
problems **equivalence classes**, because all problems within an equivalence
class are performed using the same path (steps) in the procedure. Conversely,
the procedure will be performed differently for each different equivalence
class. There may also be some variable characteristics of the inputs which
don't require that the procedure be performed differently. For example,
the procedure for adding 1/4 and 1/4 is the same as the procedure for adding
1/12 and 1/12; it doesn't matter that the denominator is a one-digit or
two-digit number. One must learn to generalize across these differences,
but it is usually not difficult to do so.