Software Carpentry

Helping scientists make better software since 1997

More on Instructional Design

Like many programmers, I’ve learned most of what I know by poking around and breaking things. Quite naturally, that has led me to believe that this is the best way to learn—after all, if it worked for me, it has to be pretty good, right? But research says otherwise. Kirschner, Sweller, and Clark’s paper, “Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching“, was published in Educational Psychologist in 2006, but the whole text is available online.

From the abstract:

Although unguided or minimally guided instructional approaches are very popular and intuitively appealing…these approaches ignore both the structures that constitute human cognitive architecture and evidence from empirical studies over the past half-century that consistently indicate that minimally guided instruction is less effective and less efficient than…approaches that place a strong emphasis on guidance of the student learning process. The advantage of guidance begins to recede only when learners have sufficiently high prior knowledge to provide “internal” guidance.

A few selections from the main body:

Minimally guided instruction appears to proceed with no reference to the characteristics of working memory, long-term memory, or the intricate relations between them. The result is a series of recommendations that most educators find almost impossible to implement…because they require learners to engage in cognitive activities that are highly unlikely to result in effective learning. As a consequence, the most efefctive teachers may either ignore the recommendations or, at best, pay lip service to them. (pg. 76)

Inquiry-based instruction requires the learner to search a problem space for problem-relevant information. All problem-based searching makes heavy demands on working memory. Furthermore, that working memory load does not contribute to the accumulation of knowledge in long-term memory because while working memory is being used to search for problem solutions, it is not available and cannot be used to learn… The consequences of requiring novice learners to search for problem solutions using a limited working memory or the mechanisms by which unguided or minimally guided instruction might facilitate change in long-term memory appear to be routinely ignored. The result is a set of differently named but similar instructional approaches requiring minimal guidance that are disconnected from much that we know of human cognition. (pg. 77)

None of [this] would be important if there was a clear body of research…indicating that unguided or minimally guided instruction was more effective than guided instruction. In act…the reverse is true. Controlled experiments almost uniformly indicate that when dealing with novel information, learners should be explicitly shown what to do and how to do it. (pg. 79)

After a half-century of advocacy associated with instruction using minimal guidance, it appears that there is no body of research supporting the technique. In so far as there is any evidence from controlled studies, it almost uniformly supports direct, strong instructional guidance rather than constructivist-based minimal guidance during the instruction of novice to intermediate learners. Even for students with considerable prior knowledge, strong guidance while learning is most often found to be equally effective as unguided approaches. Not only is unguided instruction normally less effective; there is also evidence that it may have negative results when students acquire misconceptions or incomplete or disorganized knowledge. (pg. 83)

There are well over a hundred references into the literature. If they’re right (and I’m now convinced), then the material for this course should be presented in smaller chunks than I’ve used in the past, and each should be accompanied by several worked examples.


Written by Greg Wilson

2010/04/12 at 17:44

Posted in Tooling, Version 4

2 Responses

Subscribe to comments with RSS.

  1. I really only have my own programming learning to draw from (almost all of it self-taught), but there seems to be a fairly clear progression from

    1) Copy and paste example into the editor and run it

    The first step, but one with large hurdles if the language isn’t familiar. (Packages setup right, calling the compiler/interpreter, basic program scaffolding, etc)

    2) Fiddle with example, break it, fix again

    Why does it work, what parts are required, why this and not that.

    3) Produce working code from scaffold (Given program scaffold and function template…write the guts of the function)

    Here is where the mechanics start to set in, and you start looking up library functions instead of if/then and do loop syntax.

    4) Single file program

    Now you can write the scaffolding.

    5) Multi file program

    For some reason, this seems to be left out of almost all programming books until very late, yet is something a professional programmer needs almost instantly. How to do this right is (to me) one of the most frustrating things to finally figure out about a language. Eg. I want to add a function or module to an existing project…where does it go?

    The thing I think is most missing from most programming courses is not just examples, but commentary on the examples, and problems with templates (write a function given program and function scaffolding).

    Example problems with errors is also another idea…find the bug (either a “won’t run” or “wrong answer” kind.

    Have examples/problems with fill in the blank spots (Guided practice, since the student knows where something needs to be fixed, and can try different things and run the program)

    Sorry for the long post, I’m very interested in seeing how this develops, both from a teaching programming standpoint as well as simply from an education standpoint.


    2010/04/12 at 19:04

  2. Honestly, I think that the current version of the course is already pretty close to what Kirschner et al. think is good. Maybe adding a couple of worked examples to it would be even better (and the outline for V4 is promising), but it certainly does not follow a “minimal guidance” idea. The user experiences you cited in some other post indicate that it works for those who are motivated. The problem of the right chunk size seems more related to learning outside the classroom than to cognitive processes.

    So the real challenge seems to be how to design it efficiently for self-instruction via the web. Is there any research on that? Having read Willinghams book ( and combining it with my own experience of looking at the SWC slides on the web, I would think that those users will practice too little. At least my usage pattern was: Read the absolute minimum about svn and Python (but only skim over the exercises instead of doing them), then skim through all slides to understand the outline, use it as a reference from there on when I ran into problems. Maybe other people are better in self-motivation, but I would doubt that there are too many who go through each and every slide and do the exercises. After all, there are many distractions on the web and on your own machine (get back to research quickly — I distantly remember you described seeing exactly this problem when looking at the reactions of scientists to taking SWC or not. Everybody thought it was important, but they found millions of reasons not to do it at that point) and is not without reason that your recommendation on code review is to do it far away from your computer. Why should learning be different?

    Maybe an approach for the online version would be to have a quick intro on each topic and a cookbook/reference structure after that?


    2010/04/13 at 08:26

Comments are closed.

%d bloggers like this: