Carl Wieman on Effective Teaching

June 15, 2012 at 9:25 am 11 comments

This is a really nice piece on a lecture by Carl Wieman, whom I have mentioned previously.  In one page, the summary hits most of the key ideas in How People Learn.

“Memory is not talked about much in education, but it is critically important,” Wieman said, and the limited discussion that does occur focuses primarily on long-term memory while short-term working memory is ignored.

He compared the latter to a personal computer with limited RAM. “The more it is called upon to do, to remember, the harder it is to process. The average human brain [working memory] has a limit of five to six new items, it can’t handle anything more.”

A new item is anything that is not in the learner’s long-term memory, he continued. “Anything you can do to reduce unnecessary demands on working memory will improve learning.”

Among them is elimination of unnecessary jargon. Wieman asked: “That new jargon term that is so convenient to you, is it really worth using up 20% of the mental processing capacity of the students for that class period?” Demands of working memory can also be reduced by shifting some learning tasks, particularly transfer of simple information from the classroom to pre-reading assignments and homework.

via AAAS – AAAS News Release – “Nobel Laureate Carl Wieman: Effective Teaching Should Create Students Who Think Like Scientists”.

Entry filed under: Uncategorized. Tags: , , , .

MATLAB and APL: Meeting Cleve Moler google-blockly – A visual programming language that generates JavaScript code

11 Comments Add your own

  • […] was alerted to this article by Mark Guzdial’s blog: Carl Wieman on Effective Teaching « Computing Education Blog. (Mark’s blog almost always has something I find interesting – thanks […]

  • 2. Franklin Chen (@franklinchen)  |  June 15, 2012 at 3:41 pm

    The demands on working memory are, I believe, the reason programming in most languages (with all the special syntax and special cases for syntax as well as semantics) is difficult for most people. I believe that the typical “computer geek” has as primary characteristic a huge working memory and doesn’t get that there is a problem for other people. For example, not being a born computer geek, I found programming extremely, insanely difficult and frustrating until I learned Scheme, which reduced the load on my memory.

    • 3. Mark Guzdial  |  June 15, 2012 at 4:13 pm

      I have wondered about designing an experiment to test the cognitive overload of different languages (e.g., syntax/notations, paradigms) and compare them. I buy that Scheme probably does have a lower cognitive load due to syntax (and APL and Smalltalk may be similar, in terms of a relatively small upfront cost to learn the uniform notation). I wonder if there’s tradeoff for the lower syntactic cognitive load. Could there be a greater cognitive load in terms of problem-solving, e.g., the challenge of figuring out how to solve problems in terms of a small number of general purpose transformations, vs. solving problems in terms of a large number of special purpose functions?

      • 4. chaikens  |  June 19, 2012 at 5:16 pm

        Reflecting on how I think when reading or writing pieces of major programs in various languages, compared to how I see beginners struggle, leads me to think that proficiency requires BOTH a solid understanding of the language elements and ready to use memorized collection of patterns. The patterns’ syntax, for example, that of a loop that runs its body with variable x taking on the values from 0 to some expression, will vary from language to language (say compare Scheme with Java!) Beginners face the cognitive load of both the syntax and how a routine pattern works so they can understand each paradigm, but after a while, that load is reduced because of learning. But it seems likely that simple versus complex syntax contributes differently to the structure of the learning path.

      • 5. Kathi Fisler  |  June 21, 2012 at 6:40 am

        I’d expect the problem solving process that students use to be a big factor in the cognitive load of using any particular syntax. Asking about cognitive load of syntax alone suggests an unstructured coding process in which students are searching a space of constructs to figure out what to use. In contrast, a design process that uses the problem statement to help drive what constructs to use should greatly reduce that space.

        In many languages, even if a student recognizes that they need “to loop”, they still have to choose which form of iteration to use. With recursion being the single “loop” in Scheme, that choice goes away. This would seem to reduce cognitive load, but it requires that students be able to see how to apply the looping construct to the problem at hand. Here is where choice of problem is also a huge factor: our Scheme-based curricula use problems in which recursion/iteration arises naturally from the data structure (ie, lists or trees), not from an algorithm that the student also has to figure out. That also reduces the load, because the problem naturally justifies the use of recursion.

        I’ve taught Scheme for years with a data-driven and design process based approach. I’ve seen the language taught without these components. I hypothesize that these components go hand in hand with the cognitive load of using the syntax. Without these components, I’d expect the cognitive load to be on par with those of other languages. Perhaps many of the “language wars” arise because we aren’t sufficiently studying the pedagogic contexts in which different languages can be used effectively.

        I’m talking myself into a study here. I’d certainly be interested in helping with some sort of cross-language study of cognitive load. If anyone else is seriously interested in trying to get something going here, please contact me.

        Kathi (

  • 7. David Klappholz  |  June 16, 2012 at 11:15 am

    Wouldn’t cognitive load have at least as much to do with the way the language was taught than with the language itself? The interesting new point in that part of the talk that you cited is up-front introduction of jargon that the instructor, an expert, finds useful, but that creates additional cognitive load for the beginner — one specific pedagogic way of increasing/decreasing cognitive load, and likely only one of many. (After all, Wieman didn’t invent the idea of cognitive load.)

    • 8. Mark Guzdial  |  June 16, 2012 at 10:13 pm

      Cognitive load is about managing cognitive function. Sweller talked about three kinds of cognitive load related to learning during problem-solving: Germane, extraneous, and intrinsic. The question about programming languages is how much is intrinsic, and the question abut learning of programming languages, how much of it is germane.

  • […] best teachers look more like the right side of the chart at the top.   From what we know about learning and teaching, a good teacher does “build consensus.”  We don’t want to just talk at students […]

  • […] FOR loop and arrays before teaching a problem in which they are useful just leads to rote learning, brittle knowledge which can’t be applied anywhere, let alone […]

  • […] print issue I received had a great article about Carl Wieman, whom I have written about previously (here and here and here, for just three).  The story (online here: Crusader for Better Science Teaching […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,428 hits
June 2012

CS Teaching Tips

%d bloggers like this: