In our previous lesson, we explored the fundamental mechanics of memory, establishing how the limited capacity of working memory acts as a crucial bottleneck in the learning process. We saw that effective learning hinges on meaningfully processing information in this mental workspace to encode it into the vast repository of long-term memory. This brings us to a critical question for any educator: how do we design instruction that respects this bottleneck instead of overwhelming it?
Today, we will answer that question by delving into Cognitive Load Theory (CLT). This theory provides a powerful, evidence-based framework for understanding and managing the mental effort your students expend during a lesson. Your interest in the practical applications of psychology in teaching will be particularly useful here, as CLT directly translates cognitive science principles into actionable teaching strategies. Our goal is for you to be able to explain CLT and, most importantly, apply its principles to reduce unproductive mental effort—what we call 'extraneous load'—in the computer courses you teach.
The Three Flavors of Mental Effort
At its core, Cognitive Load Theory, developed by John Sweller, builds directly on the model of memory we discussed. It posits that since working memory is limited, any instructional design must be optimized to manage the load placed upon it. If the total cognitive load exceeds a student's working memory capacity, learning is hampered.
CLT helpfully categorizes this load into three distinct types. Understanding these types is the first step toward managing them effectively.

Let's break down these three types. The following article, written with a software development audience in mind, provides a clear and relatable explanation.
The Cognitive Load Theory in Software Development
This article frames Cognitive Load Theory within a context you'll find familiar: software development. It provides an excellent, clear definition of the three types of cognitive load.
Please read the section titled "Different Forms of Cognitive Load." As you read, focus on distinguishing between these three concepts: Intrinsic load: The complexity that is fundamental to the topic itself. Extraneous load: The unnecessary mental work created by the way material is presented. Germane load: The productive effort that leads to the construction of mental models, or schemas.
To put this in the context of your teaching:
- Intrinsic Load: Teaching a student how a
forloop works has a certain inherent (intrinsic) difficulty. Teaching recursion or pointers in C++ has a much higher intrinsic load. This is determined by the topic's complexity and the student's prior knowledge. You can manage this by breaking complex topics into smaller parts, but you cannot eliminate it. - Extraneous Load: This is the "bad" load that you, the teacher, have the most control over. It's the mental clutter created by confusing instructions, poorly designed slides, distracting visuals, or forcing a student to hunt for related pieces of information. For example, explaining a code snippet on one slide while showing its output on the next slide creates extraneous load.
- Germane Load: This is the "good" load—the deep thinking we want to encourage. It's the effort a student invests in connecting the
forloop concept to their existing knowledge of variables and lists, forming a new schema in their long-term memory.
The central equation of CLT is that a student's total working memory capacity must accommodate all three loads. Since that capacity is fixed, our primary strategy as educators is to minimize extraneous load to free up as much mental space as possible for the essential work of managing intrinsic load and fostering germane load.
Why "Figuring It Out" is an Inefficient Strategy
Many instructors, especially in technical fields, were themselves self-taught and believe that the best way to learn is to struggle through problems with minimal guidance. The idea is that this struggle builds character and problem-solving skills. CLT research, however, shows this to be a highly inefficient and often counter-productive approach for novices.
Dr. Felienne Hermans gives a brilliant talk on this topic, directly addressing the culture of teaching programming. She uses an experiment by John Sweller to powerfully illustrate why direct, explicit instruction is superior to unguided exploration for beginners.
"How to teach programming (and other things)?" by Felienne Hermans
In this segment of her talk "How to teach programming (and other things)?", Dr. Hermans dismantles the myth of "minimal guidance" and explains the cognitive science behind why it fails.
Please watch from this section. Pay close attention to the algebra experiment she describes. The group that received a "recipe" (a worked example) not only solved the problems faster but also performed better on new problems. This is because the recipe reduced their extraneous cognitive load, freeing up mental resources to build a general problem-solving schema (germane load).
As Dr. Hermans explains, you don't become an expert by doing expert things from day one. You become an expert by building up a library of "chunks" or schemas in your long-term memory. Our role as teachers is to facilitate the creation of those schemas as efficiently as possible, and that means reducing any unnecessary mental work that gets in the way.
Practical Strategies to Reduce Extraneous Load
So, how do we actually reduce this "bad" cognitive load in our lessons? Cognitive scientists have identified several common instructional pitfalls and the principles to counteract them. The following guide, created for computing educators, provides a superb summary.
This document summarizes key effects from CLT and their direct implications for teaching computer science. It's a fantastic, practical toolkit.
Please focus on the section "Optimising instructional design" and the table that follows. This table outlines several key effects. Pay particular attention to: The Split-Attention Effect and its implication to combine diagrams with labels and annotate code with comments. The Redundancy Effect and the advice to avoid repeating information and minimize unnecessary "boilerplate" code for novices. The Worked Example Effect, which reinforces the point from the video you just watched and is arguably the most powerful tool for teaching technical skills.
Let's synthesize these principles into a concrete example. Imagine you are teaching Python functions for the first time.
A High-Load Design (What to Avoid):
- You show a slide with the full
defsyntax, a separate flowchart diagram illustrating function calls, and a block of code using a function, all at once. (High intrinsic load, not segmented). - The code example is on one slide, and its output is on the next slide. (Violates the Split-Attention Effect).
- You read the text on your slide verbatim to the students. (Violates the Redundancy Effect).
- After the brief explanation, you immediately ask students to "Write a function that takes a list of numbers and returns the average." (No worked example, requires too much problem-solving for a novice).
A Low-Load Design (What to Do):
- Segmenting: Introduce just the core concept: "A function is a named block of code that we can run whenever we want."
- Worked Example: Live-code the simplest possible function, narrating your thought process. "First, we type
defto define the function. Let's name itgreet. We add parentheses and a colon..." This combines auditory and visual channels (Modality Effect) and models the process. - Weeding: You only show the essential code. You don't include complex optional parameters or error handling yet.
- No Split-Attention: You annotate the code directly with comments or arrows on the same slide to explain what each part does.
- Faded Example: After your demonstration, you provide a partially complete function and ask students to fill in the missing line. This gradually transfers responsibility to them.
For a quick summary of these and a few other useful techniques, this short video provides a helpful overview.
9 Ways to Reduce Cognitive Load by @TeacherToolkit
This video by TeacherToolkit provides a rapid-fire list of nine ways to reduce cognitive load. Many of these map directly to the principles we've just discussed.
Watch the video to get a concise summary of key strategies. Note how techniques like segmenting, weeding (being concise), aligning facts and images (avoiding split-attention), and eliminating redundant information all work towards the same goal of reducing extraneous load.
By consciously applying these principles, you shift the design of your lessons from forcing students to "figure it out" to actively guiding them in building robust mental models, which is the true foundation of learning.
Conclusion
In this lesson, we have moved from the theoretical limits of working memory to a practical framework for managing it. Cognitive Load Theory gives us a language and a set of tools to design instruction that is not just easier for students, but more effective at fostering long-term understanding.
Here are the key takeaways:
- Cognitive Load is the total mental effort exerted in working memory during a task. It is composed of three types:
- Intrinsic Load: The inherent difficulty of the material.
- Extraneous Load: Unnecessary load caused by poor instructional design.
- Germane Load: The desirable effort that leads to schema formation and learning.
- The primary goal of an instructor is to minimize extraneous load to maximize the working memory available for germane load.
- Direct instruction and worked examples are highly effective for novices because they reduce the extraneous load associated with unguided problem-solving.
- Key strategies for reducing extraneous load include avoiding split-attention, eliminating redundancy, segmenting complex information, and using both visual and auditory channels (modality).
Now that we understand the importance of building schemas (germane load), our next lesson will focus squarely on them. We will explore how mental schemas are formed and why they are so absolutely critical for learning and applying new technical concepts.