How to Design
an Effective Lesson

far too many slides in far too little time

Greg Wilson

November 2017


What's About to Happen

  • We know as much about how learning works as we do about public health
  • Most people in higher education don't even know this knowledge exists
  • A few key ideas can make lessons significantly more effective

Having crammed a dozen books into a two-day course, we will now try to cram that course into half an hour


  • Benner and others studied how nurses become more proficient
  • Work replicated in many other domains
  • (Fairly) predictable series of cognitive transitions
    • People don't just know more
    • They think differently
  • We will simplify to three stages:
    • Novice
    • Competent
    • Expert

Characteristics of Novices

  • Ask questions that don't make sense
  • Do things by rote
    • No understanding cause and effect
  • Rely on analogies with other domains
    • Often unconsciously
  • Use incorrect language or use language incorrectly
  • Often over-confident (Dunning-Kruger Effect)
    • Don't know what or how much they don't know

Root Cause

  • Novices don't yet have a usable mental model of the domain
  • Models don't have to be complete or accurate to be useful
    • Atoms are colored balls connected by springs
    • Atoms are little solar systems with electrons orbiting a nucleus
    • A computer has a CPU, memory, and a hard drive

What Novices Need

  • Your goal when teaching novices is not to give them lots of information
    • Because they don't yet have somewhere to put it
  • Your goal is to help them build a usable mental model
    • Never hesitate to sacrifice truth for clarity


  • DataCamp's introduction to Unix only teaches 15 commands in 3 hours
  • But it also teaches:
    • Paths
    • Redirection
    • Command-line arguments
    • History
    • Pipes
  • Without that mental model, the manual doesn't make sense

How to Help Novices

  • The key to helping novices build mental models is to diagnose misconceptions
What is 37 + 15?
a) 52 Correct
b) 42 Threw away the '1'
c) 412 Treated each sub-problem independently
d) 43 Carried the '1' back into the same column
  • Each misunderstanding needs a different corrective explanation

You Need a Model of Their Model

  • You can only create effective diagnostic exercises if you understand your learners' mental models and misconceptions
  • Once you do, you will automatically create lessons that forestall and correct misconceptions
  • You should be able to explain what misconception each of your expected wrong answers is checking for

Interlude: What We Don't Have (Yet)

  • All teaching involves:
    1. Domain knowledge
    2. General teaching knowledge
    3. Pedagogical content knowledge (PCK): how best to teach this topic to this audience
  • We don't yet have catalogs of PCK for programming

Meta: What We Just Did

  1. Started building your mental model of learning
  2. Motivated you by using an authentic task as an example
  3. Gave you a short break so you can clear your head for the next section

Characteristics of Experts

  • Solve common problems "instantly"
  • Able to solve unusual problems as well
  • Able to reason backward from effect to cause (diagnosis)
  • Sometimes unable to explain their reasoning
  • Often mis-use words like "simple" or "obvious"

A Useful Lie

  • Knowledge isn't stored as a graph, but it's a useful metaphor
  • Expert's graph isn't just larger: it's also much more densely connected
Competent vs. Expert Search
  • Experts take one step where the "merely competent" have to search

Concept Maps

  • A picture of someone's mental model

Concept Map
  • Important to emphasize the connections just as much as the concepts
  • Knowledge that cannot be retrieved cannot be used

How Memory Works

  • Sensory memory: 1-2 seconds
  • Short-term memory: 7±2 items for 10-15 seconds
  • Long-term memory: permanent storage
    • But frequently rewritten
  • New information goes into short-term memory
  • Learning only takes place if it's transferred to long-term memory

How Big Should a Lesson Be?

  • If we give learners too much too fast, it spills out of short-term memory and nothing is remembered
  • So count the nodes and edges in the concept map
  • Concept Map
  • Each learning episode should be half a dozen items
  • Immediately reinforced to keep them in short-term memory long enough to be transferred

Cognitive Load

  • Different parts of problem solving compete for processing time
    • Recall
    • Planning
  • Good lessons let learners concentrate on one aspect of a problem at a time
  • Example: Parsons Problems
    • Rearrange jumbled lines of code to solve a problem
    • Allows learner to concentrate on data flow

Faded Examples

  • A succession of closely-related problems
  • Each gives the learner less scaffolding
    • Parts that are removed are closely related
  • Learners can focus on one aspect of the problem at a time
  • And learn the underlying pattern by example

Fully Worked Example

# ["red", "green", "blue"] => 12
def total_length(words):
    total = 0
    for word in words:
        total += len(word)
    return total
  • Go through this line by line

First Exercise

# ["red", "green", "blue"] => [3, 5, 4]
def all_lengths(words):
    lengths = ____
    for word in words:
        lengths ____
    return lengths
  • Directs attention to initialization and update

Second Exercise

# ["red", "green", "blue"] => "redgreenblue"
def join(words):
    result = ____
    for ____ in ____:
    return result
  • Directs attention to control flow

Final Exercise

# ["red", "green", "blue"] => "RGB"
def acronym(words):
  • By now the pattern has been internalized
  • And learners have done more work in less time

Interlude: Chunking

  • Items that frequently occur together are stored in chunks that only take up one slot in short-term memory
    • The digits in frequently-used phone numbers
    • Common chord progressions
  • Chunking lets us work with larger information sets
    • At the risk of mis-categorizing items
  • Good lessons give chunks names
    • "Flag"
    • "Best value seen so far"
  • Good libraries turn chunks into components

Systematic Lesson Design

  • Use the ideas we have seen so far as the basis for a repeatable lesson design process
  • Described as a sequence, but always iterative in practice
  • Sequence description is also easiest for the next person to understand

1) Brainstorming

  1. What problems will learners solve?
  2. What concepts and techniques will they learn?
  3. What tools or data sets will they use?
  4. What terms or jargon will you define?
  5. What analogies or heuristics will you use?
  6. What mistakes or misconceptions do you expect?

  • Don't need to answer every question
  • May pose and answer others
  • Deliver: rough scope for the course

2) Who is this course for?

  • "Beginner" and "expert" mean different things to different people
  • Use learner personas to define who you are helping and what they think they will get out of the course

  • Deliver: brief summaries of who your course will help and how

Example Persona

  • Sindhu, 28, lives in Bangalore
  • BSc in Biochemistry, MSc in Pharmacy
  • Vaccine researcher at a pharmaceutical company
  • Did two courses in statistics and experimental design
    • Used Excel and SPSS
  • Wants better data science skills to help her advance in her current career
  • Not sure which languages or skills to start with
  • Likes things she can do on her commute

3) What will learners do?

  • Best way to specify content is to design exercises
    • More concrete than "explain residual calculation"
    • Helps uncover dependencies and technical requirements
  • Each exercise should be:
    • One or two bullet points to explain its purpose
    • Fully worked out code or solution
  • The teaching equivalent of test-driven development

  • Deliver: 3-4 exercises per hour of student time

What Exercises to Include in the Design

  • How will learners first encounter each key concept?
  • What is the hardest thing learners will do?
  • Is every key technical requirement exercised?
  • Remember, this stage is design, not implementation

4) How are concepts connected?

  • Put exercises in logical order
  • Derive course outline from them
  • And make notes about the gaps you've just noticed…

  • Deliver: course outline (10-12 bullet points per hour)

5) How is the course described?

  • Summarize everything you have created from the learner's point of view
  1. A one-paragraph description
  2. Half a dozen learning objectives
  3. A summary of prerequisites

  • Deliver: all of the above

6) Break the Rules

Break any of these rules sooner than say anything outright barbarous.
George Orwell

  • Remember, in practice this process is always iterative
  • Note: This lecture is part of a course designed this way



Thank You