Learning Graph Quality Metrics Report¶
Overview¶
- Total Concepts: 452
- Foundational Concepts (no prerequisites, other concepts depend on them): 2
- Terminal Nodes (nothing depends on them, but have prerequisites): 235
- Orphaned Nodes (completely disconnected, no edges): 0
- Concepts with Dependencies: 450
- Average Dependencies per Concept: 1.87
Graph Structure Validation¶
- Valid DAG Structure: ✅ Yes
- Self-Dependencies: None detected ✅
- Cycles Detected: 0
Foundational Concepts¶
These concepts have no prerequisites:
- 1: Python Interpreter Overview
- 19: Command Line Basics
Dependency Chain Analysis¶
- Maximum Dependency Chain Length: 13
Longest Learning Path:¶
- Python Interpreter Overview (ID: 1)
- print() Function (ID: 21)
- Indentation as Syntax (ID: 24)
- Code Block Structure (ID: 28)
- Defining a Function with def (ID: 115)
- Objects and Classes Overview (ID: 285)
- class Keyword (ID: 288)
- init() Constructor (ID: 289)
- Creating Class Instances (ID: 291)
- Inheritance Basics (ID: 295)
- Exception Hierarchy (ID: 282)
- Custom Exception Classes (ID: 283)
- Exception Chaining (ID: 284)
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: 235 (52.0% of all concepts)
- Healthy Range: 5-40% of total concepts
Concepts at the end of learning paths:
- 2: Python 2 vs Python 3
- 4: Repl.it Online IDE
- 5: Thonny Beginner IDE
- 6: Spyder Scientific IDE
- 7: VS Code Editor
- 9: JupyterLab Environment
- 15: Python REPL Shell
- 16: Raspberry Pi Python Platform
- 17: Skulpt Browser Python
- 18: Google Colab Environment
- 25: Case Sensitivity
- 27: Blank Lines and Readability
- 30: Whitespace Rules
- 36: Augmented Assignment Operators
- 37: Constants by Convention
- 39: Swap Two Variables
- 40: Naming Conflicts to Avoid
- 43: Division Returns Float
- 44: Integer Division Operator
- 45: Modulo Operator
...and 215 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 | 137 | List Type | 34 |
| 2 | 58 | String Type | 33 |
| 3 | 115 | Defining a Function with def | 29 |
| 4 | 205 | import Statement | 25 |
| 5 | 31 | Variable Definition and Assignment | 24 |
| 6 | 41 | Integer Type | 23 |
| 7 | 1 | Python Interpreter Overview | 21 |
| 8 | 100 | for Loop over Sequence | 21 |
| 9 | 285 | Objects and Classes Overview | 18 |
| 10 | 163 | Dictionary Type | 16 |
Outdegree Distribution¶
| Dependencies | Number of Concepts |
|---|---|
| 0 | 2 |
| 1 | 132 |
| 2 | 249 |
| 3 | 64 |
| 4 | 5 |
Recommendations¶
- ℹ️ High terminal node percentage (52.0%): Consider if some terminal concepts should be prerequisites for advanced concepts
- ✅ DAG structure verified: Graph supports valid learning progressions
Report generated by learning-graph-reports/analyze_graph.py