Skip to content

Mental Models Map

This document helps students understand the progression of thinking across courses.


The Three Mental Models

Each course in the embedded systems track emphasizes a different way of thinking about software:

┌─────────────────────────────────────────────────────────────────────────────┐
│                        MENTAL MODEL PROGRESSION                             │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Programming 1          Programming 2           ES101                       │
│  ─────────────          ─────────────           ─────                       │
│                                                                             │
│  ┌─────────────┐       ┌─────────────┐        ┌─────────────┐               │
│  │  ALGORITHM  │       │   MACHINE   │        │   SYSTEM    │               │
│  │   THINKING  │  ───▶ │   THINKING  │  ───▶  │   THINKING  │               │
│  └─────────────┘       └─────────────┘        └─────────────┘               │
│                                                                             │
│  "What does the        "How does the          "What does the                │
│   code DO?"             machine EXECUTE it?"   system DO over TIME?"        │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Course-by-Course Breakdown

Course Dominant Model Core Question Key Concepts
Programming 1 Algorithm "What does the code do?" Variables, loops, functions, control flow, data structures
Programming 2 Machine "How does the machine execute it?" Registers, memory, timing, interrupts, bare-metal
Digital Tech Logic/State "How does logic become behavior?" FSMs, synchronous design, events, transitions
ES101 System "What does the system do over time?" Physical constraints, noise, uncertainty, measurement, validation

The Key Transitions

Programming 1 → Programming 2

What changes:

  • Loops become time-consuming - Each iteration has measurable cost
  • Functions have stack cost - Not just organization, but memory
  • while(1) becomes a scheduler - The main loop is your timing engine

New awareness:

"Code that works on PC may not work on MCU because time matters."

Programming 2 → ES101

What changes:

  • From "correct" to "validated" - Working once is not enough
  • From "code behavior" to "system behavior" - Physical world adds uncertainty
  • From "debugging code" to "measuring systems" - Data explains behavior

New awareness:

"A system that works once without explanation does not meet engineering standards."

Digital Tech → ES101

What changes:

  • FSMs become software architecture - Not just hardware diagrams
  • Timing constraints become measurable - Jitter, latency, deadlines
  • Events become interrupts - Hardware mechanisms for software patterns

New awareness:

"The concepts from digital design apply directly to embedded software."


Why This Matters

Students often struggle in ES101 not because the content is hard, but because they're using the wrong mental model.

Common Mistakes

Mistake Wrong Model Correct Model
"I tested it once, it works" Algorithm (correctness) System (validation)
"I'll just add a delay" Algorithm (sequence) Machine (timing cost)
"The sensor reads 25cm" Algorithm (single value) System (uncertainty)
"Why does it drift over time?" Machine (static) System (dynamic)

The ES101 Reframe

Programming 1/2 View ES101 View
"The code runs" "The system behaves"
"It gives an answer" "It gives an answer ± uncertainty"
"Fast enough" "Meets deadline with margin"
"No bugs" "Validated under conditions"

One Slide Summary

Use this in Week 1 of any course to orient students:

┌──────────────────────────────────────────────────────────────┐
│                                                              │
│   WHERE ARE WE IN THE CURRICULUM?                            │
│                                                              │
│   Programming 1:  "What does the code do?"                   │
│                    Focus: LOGIC                              │
│                                                              │
│   Programming 2:  "How does the machine execute it?"         │
│                    Focus: HARDWARE                           │
│                                                              │
│   ES101:          "What does the system do over time?"       │
│                    Focus: BEHAVIOR + MEASUREMENT             │
│                                                              │
│   You are here: ──▶ [    ]                                   │
│                                                              │
└──────────────────────────────────────────────────────────────┘

Cross-Reference

  • [[Tutorials/robot-unboxing|Tutorial: Robot Unboxing — Embedded Fundamentals]]
  • [[Reference/extras/embedded-thinking-cheatsheet|Embedded Thinking Cheatsheet]]
  • [[course-structure|Course Structure]]

For Instructors

When students seem lost or ask "why are we doing this differently?", refer them to this document. The answer is almost always:

"Because the question we're asking is different, even if the hardware is familiar."

This is the foundation of spiral learning: same concepts, deeper questions, new perspectives.