originally submitted by:
Avner Ben
SELA Software and Education LAbs ltd.
Israel avnerben@netvision.net.il
NAME:
Sneak preview
INTENT:
Prepare students in advance for a tough subject that, due to linear nature of course program, is only due at a later stage, using all available means, indirect means included.
MOTIVATION:
Late in the teaching program, an especially hard-to-explain feature becomes a teaching nuisance, due to accumulated intellectual fatigue. For various reasons, a diffused learning program is considered to be out of the question.
We are left with a strict linear progress that allows no breaks and rests. In the beginning of this course of learning, little intellectual effort is required of the student and then the pressure builds exponentially. Towards the climax, when the real intellectually challenging subjects finally come up, students who have been dangling may break and loose motivation to proceed. A good teacher should take additional means to help students fight intellectual fatigue at the later stages of the course.
Adding material to the course program – even if done with the intent to clarify - eventually adds
complexity to the teaching program. Obviously, adding complexity – of any kind – at the later stages is out of the question. However, it is feasible at the earlier stages, when, apparently it is not needed.
APPLICABILITY:
A structured course, teaching a multi-paradigm technical discipline that may be – and indeed has been – ordered as a succession of learning levels.
CONTRAINDICATIONS:
This technique usually works with highly motivated students and may irritate poorly motivated ones.
The problem solved here is less critical or non-existent in a non-linear course program.
STRUCTURE:
Having spotted a major conceptual hindrance in an advanced learning stage, you may stumble upon its potential precursor in an earlier learning stage.
Rearrange your teaching material to over-emphasize this innocent feature. Explain its didactic importance, giving a sneak preview of what should be anticipated later. (However, do not exaggerate – the advanced subject is not studied yet). At this early stage, the students may fail to grasp the importance of the idea being served, but they are capable of coping with it. By the time you get to the advanced stage, help students overcome mental fatigue by recalling the precursor feature, stressing that both fulfil a similar function, but on different levels of sophistication.
CONSEQUENCES:
The course program has been rearranged.
While the linear progress is maintained, special stress is given at the early stages to matters whose hidden functionality will be revealed at a later stage.
The “real” feature at the “correct” stage is explained on a high level of abstraction (the low level has already been taken care of).
The “wrong” features of the studied discipline are sometimes stressed (at the early stage).
ISSUES TO CONSIDER:
Teacher may be exposed to criticism from people who stress the professional aspect and ignore the didactic one, in this nature:
Course material may seem, at some points, idiosyncratic from a strictly professional point of view.
Attention is given to primitive features that – from a puritan professional point of view – had rather be ignored altogether.
CULTURAL DEPENDENCIES:
None identified yet
RESOURCES NEEDED:
Not recorded yet
EXAMPLE INSTANCES OF THIS PATTERN:
The programming language C++ is a notorious multi-paradigm discipline, which, with a horde of other reasons, makes it a serious teaching challenge. A strict linear succession of programming paradigms is a valid - and well-tested - approach to teaching it. Especially when students may be expected to already control the first stage and half-control the second.
In the late stage of STL-style generic programming, students face the challenge of understanding the notion of iterators and then, writing one. It is often hard to motivate students to write two versions of each iterator, when the obvious main version may be at the verge of their capabilities. It so happens that the “second version” is needed to deal with constant objects.
Now, at the early stage of object-based programming, operator-overloading item, there is the array-access, which may be demonstrated to fulfil a similar function to that of the iterator, though on a much more primitive level. Oddly enough, it, too, invites two versions, the second needed to deal with constant objects! At this early stage, the nuisance of the constant version may be tackled easily.
Indeed, C++ teachers have been applying the array-access successfully – in a conscious or unconscious way - as a sneak preview for teaching the more complicated notion of the iterator.
RELATED PATTERNS:
The pattern is planned to be part of a pattern-language by the name of “The Linear Course.”