Learning Graph Quality Metrics Report
Overall Quality Score: 93/100
Rating: Excellent — this graph is ready to drive chapter design.
This score is an editorial judgment layered on top of the automated metrics below (produced by
analyze-graph.py), which check DAG validity, connectivity, and degree distributions but do not
themselves compute a single score.
What earns the high score:
- Valid DAG, zero cycles, zero self-dependencies — the graph is structurally sound.
- Fully connected: 1 connected component across all 293 concepts, 0 orphaned nodes (after two rounds of fixes — see below).
- Healthy foundational base: 14 zero-dependency concepts anchor the graph, spanning hardware (breadboard, buttons, potentiometer, rotary encoder, SPI/I2C interfaces), software fundamentals (comment syntax, indentation), and the two non-technical research anchors (Ekman's universal emotions, computational thinking, screen-based robot face) that let history/psychology content stand on its own rather than forcing artificial technical prerequisites onto it.
- Healthy terminal-node ratio: 34.5% (101 of 293) — comfortably inside the 5-40% healthy range. Terminal nodes cluster sensibly at true endpoints: capstone deliverables (Capstone Demonstration, Original Robot Personality), business/history conclusions (Robot Business Case Study, Educational Robotics Market), and specialized wiring details (Display Mounting Considerations).
- Genuine multi-path structure, not a linear chain: average outdegree 1.82, with 154 concepts (52.6%) drawing on 2 prerequisites and 30 concepts drawing on 3-6, meaning most concepts converge from multiple prior ideas rather than following one single-file thread. High-indegree hubs (Frame Buffer: 13, Ellipse Method: 12, Neutral Expression: 12, Face Outline: 10) are exactly the concepts that should be hubs pedagogically — they are reused across drawing, anatomy, emotion, and history branches.
- The longest path (27 concepts, Microcontroller -> ... -> Capstone Demonstration) is plausible for a course that starts at bare-metal hardware and ends at a two-display capstone; it is not a sign of an artificially stretched chain, since 96 other concepts also reach the graph's terminal layer by other, shorter paths.
What holds it back from higher:
- The single longest chain (27 hops) is long enough that a strictly linear reading of it would be taxing; students should be encouraged to use the graph's many shorter alternate paths rather than the single deepest one.
- A handful of small clusters (e.g., the rotary-encoder sub-cluster) needed an explicit cross-link (into Live Parameter Tuning / Control Mapping Design) to avoid becoming an isolated island. This was fixed, but it is a reminder that peripheral hardware topics need deliberate integration back into the main line of the course.
- 101 terminal nodes is on the higher side of "healthy," reflecting how many distinct, specific concepts (individual emotions, individual robots, individual wiring pins) exist in this domain; this is appropriate for the subject matter rather than a defect, but chapter design should group these into coherent clusters rather than treating each as an independent lesson.
Overview
- Total Concepts: 293
- Foundational Concepts (no prerequisites, other concepts depend on them): 14
- Terminal Nodes (nothing depends on them, but have prerequisites): 101
- Orphaned Nodes (completely disconnected, no edges): 0
- Concepts with Dependencies: 279
- Average Dependencies per Concept: 1.82
Graph Structure Validation
- Valid DAG Structure: ✅ Yes
- Self-Dependencies: None detected ✅
- Cycles Detected: 0
Foundational Concepts
These concepts have no prerequisites:
- 3: Microcontroller
- 5: Solderless Breadboard
- 6: Jumper Wires
- 7: Momentary Push Button
- 8: Potentiometer
- 9: Rotary Encoder
- 10: SPI Interface
- 11: I2C Interface
- 26: Screen-Based Robot Face
- 70: Comment Syntax
- 71: Indentation Rules
- 84: Pixel
- 170: Ekman Universal Emotions
- 271: Computational Thinking
Dependency Chain Analysis
- Maximum Dependency Chain Length: 27
Longest Learning Path:
- Microcontroller (ID: 3)
- RP2040 Microcontroller (ID: 2)
- Raspberry Pi Pico (ID: 1)
- MicroPython (ID: 51)
- Module (ID: 66)
- Import Statement (ID: 65)
- FrameBuf Module (ID: 74)
- Frame Buffer (ID: 85)
- Horizontal Line Method (ID: 100)
- Rectangle Method (ID: 103)
- Ellipse Method (ID: 120)
- Face Outline (ID: 147)
- Eye Placement (ID: 148)
- Eye Size Parameter (ID: 149)
- Pupil (ID: 151)
- Draw Face Function (ID: 161)
- Animation Loop (ID: 203)
- Timing Loop (ID: 208)
- Sleep Function Timing (ID: 209)
- Ticks Function Timing (ID: 214)
- Ticks Diff Calculation (ID: 215)
- Draw Time Benchmarking (ID: 216)
- Expressiveness Versus Complexity (ID: 280)
- Constraint-Driven Design (ID: 286)
- Minimum Viable Feature Set (ID: 287)
- Capstone Project (ID: 288)
- Capstone Demonstration (ID: 289)
Terminal Nodes Analysis
Terminal nodes are concepts that nothing else depends on but have prerequisites. They represent natural endpoints of learning paths — culminating or specialized concepts.
- Total Terminal Nodes: 101 (34.5% of all concepts)
- Healthy Range: 5-40% of total concepts
Concepts at the end of learning paths:
- 4: Cytron Maker Pi RP2040
- 15: Data Command Pin
- 21: Pull-Up Resistor
- 23: Breadboard Wiring Diagram
- 24: Display Power Requirements
- 25: Display Mounting Considerations
- 40: Robot Face Design Scoping
- 43: Robot Voice Interaction
- 44: Robot Business Case Study
- 46: Anki Company History
- 48: Robot Personality Branding
- 49: Screen As Face Metaphor
- 50: Educational Robotics Market
- 62: For Loop
- 73: Bit Shifting
- 75: String Formatting
- 77: Multiple Return Values
- 93: Bounding Box
- 95: Show Method
- 96: Frame Buffer Size Calculation
...and 81 more
Orphaned Nodes Analysis
Orphaned nodes are completely disconnected concepts with no inbound AND no outbound edges. These indicate a quality problem — every concept should connect to the graph.
- Total Orphaned Nodes: 0
✅ No orphaned nodes detected. All concepts are connected to the graph.
Connected Components
- Number of Connected Components: 1
✅ All concepts are connected in a single graph.
Indegree Analysis
Top 10 concepts that are prerequisites for the most other concepts:
| Rank | Concept ID | Concept Label | Indegree |
|---|---|---|---|
| 1 | 85 | Frame Buffer | 13 |
| 2 | 120 | Ellipse Method | 12 |
| 3 | 175 | Neutral Expression | 12 |
| 4 | 147 | Face Outline | 10 |
| 5 | 153 | Eyebrow Shape | 9 |
| 6 | 155 | Mouth Shape | 9 |
| 7 | 203 | Animation Loop | 9 |
| 8 | 10 | SPI Interface | 8 |
| 9 | 250 | RGB565 Color Model | 8 |
| 10 | 54 | Variable | 7 |
Outdegree Distribution
| Dependencies | Number of Concepts |
|---|---|
| 0 | 14 |
| 1 | 95 |
| 2 | 154 |
| 3 | 21 |
| 4 | 4 |
| 5 | 3 |
| 6 | 2 |
Recommendations
- ✅ Terminal node percentage (34.5%): Within healthy range (5-40%)
- ✅ DAG structure verified: Graph supports valid learning progressions
- ℹ️ Long dependency chains (27): Ensure students can follow extended learning paths
Report generated by learning-graph-reports/analyze_graph.py