Skip to content

Commit 1d0bb89

Browse files
travisjneumanclaude
andcommitted
feat: add multi-modal learning infrastructure — tools, templates, guides
Add 4 new CI tools (modality hub generator, hub link checker, solution skeleton generator, doc length auditor), 4 content templates, 4 guide pages (learning style selector, video/diagram/walkthrough indexes), CI validation step, mkdocs nav updates, README value prop rewrite for multi-modal identity, and --learning-style flag on study plan generator. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent e74e854 commit 1d0bb89

16 files changed

Lines changed: 1347 additions & 7 deletions

.github/workflows/curriculum-checks.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ jobs:
5757
- name: Portable path contract checks
5858
run: python tools/check_portable_paths.py
5959

60+
- name: Modality hub link validation
61+
run: python tools/check_modality_hubs.py
62+
6063
- name: Run representative pytest sample
6164
run: |
6265
pytest --tb=short --no-header -q \

README.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@
2929

3030
## What Makes This Different
3131

32-
This is not a video course — **you build real things**.
32+
**Every learning style is first-class.** Read concepts, build projects, watch walkthroughs, test with quizzes, review with flashcards, visualize with diagrams, or try code in the browser — all following the same sequential path. However you learn best, there is a pathway through this curriculum for you.
3333

34-
This is not a bootcamp — **you go at your own pace**.
34+
**You build real things.** 251 projects, not toy examples. Every project has tests, starter code, and "Alter it / Break it / Fix it" challenges that force you past copy-paste into actual understanding.
3535

36-
This is not a reference manual — **it is a complete guided path**.
36+
**You go at your own pace.** This is not a bootcamp with deadlines. Follow the click chain, take breaks, come back. The spaced repetition system tracks what you have forgotten so you can review efficiently.
3737

38-
251 projects, not toy examples. Every document, concept guide, project, quiz, and challenge is connected through a single click chain. Start at the beginning and follow the "Next" links. That's it.
38+
**Every step is connected.** Every document, concept guide, project, quiz, walkthrough, and challenge is linked through a single click chain with a "Learn Your Way" navigation table at every stop. Start at the beginning and follow the "Next" links. That's it.
39+
40+
Not sure how you learn best? Take the [Learning Style Selector](./guides/LEARNING_STYLE_SELECTOR.md) quiz to get a personalized path through the material.
3941

4042
---
4143

@@ -241,11 +243,17 @@ Within each project directory, you'll find:
241243

242244
## 🎮 Choose Your Learning Mode
243245

244-
**Play-First** — Open a project, tinker, break things, figure it out. Read the concept doc when you get stuck. Good for people who learn by doing.
246+
**Play-First (Builder)** — Open a project, tinker, break things, figure it out. Read the concept doc when you get stuck. Watch the walkthrough only if you are truly blocked. Good for people who learn by doing.
247+
248+
**Structured (Reader)** — Read the concept doc, take the quiz, then do the projects in order. Use the checklist and mastery gates. Good for people who like clear progress markers.
249+
250+
**Watch-First (Watcher)** — Watch the curated video for each concept, read the walkthrough to see the thinking process, then build the project. Good for people who learn by observing first.
251+
252+
**Visual-First (Visualizer)** — Start with the Mermaid diagrams to see the big picture, read the concept guide with the diagram as your mental map, then build. Good for people who think in pictures and systems.
245253

246-
**Structured**Read the concept doc, take the quiz, then do the projects in order. Use the checklist and mastery gates. Good for people who like clear progress markers.
254+
**Hybrid (Recommended)**Follow the structured path on weekdays. Explore expansion modules and challenges on weekends. Review flashcards daily. Mix modalities as needed.
247255

248-
**Hybrid (Recommended)** — Follow the structured path on weekdays. Explore expansion modules and challenges on weekends. Review flashcards daily.
256+
Take the [Learning Style Selector](./guides/LEARNING_STYLE_SELECTOR.md) to find your best starting approach.
249257

250258
---
251259

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Diagrams: [CONCEPT_NAME]
2+
3+
[Back to concept](../[concept-slug].md)
4+
5+
---
6+
7+
## Overview
8+
9+
```mermaid
10+
[Main concept map or flowchart — shows the big picture of how this concept fits together]
11+
```
12+
13+
## How It Works Step by Step
14+
15+
```mermaid
16+
[Process or sequence diagram showing execution flow — what Python does internally]
17+
```
18+
19+
## Decision Guide: When to Use This
20+
21+
```mermaid
22+
[Decision tree for choosing between this concept and related alternatives]
23+
```
24+
25+
## Common Patterns
26+
27+
```mermaid
28+
[Diagram showing the most common usage patterns or data flow]
29+
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Videos: [CONCEPT_NAME]
2+
3+
[Back to concept](../[concept-slug].md)
4+
5+
---
6+
7+
## Best single video
8+
9+
- **[Video Title]** by [Creator] ([duration])
10+
[Why this video is the best starting point for this concept]
11+
[YouTube link]
12+
13+
## Alternative explanations
14+
15+
Different teachers explain things differently. Try these if the first video did not click:
16+
17+
- **[Video Title]** by [Creator] ([duration])
18+
[What makes this explanation different — different angle, pace, or style]
19+
[YouTube link]
20+
21+
- **[Video Title]** by [Creator] ([duration])
22+
[What makes this explanation different]
23+
[YouTube link]
24+
25+
## Deep dives
26+
27+
For learners who want more depth after understanding the basics:
28+
29+
- **[Video Title]** by [Creator] ([duration])
30+
[What advanced topics this covers]
31+
[YouTube link]
32+
33+
## Interactive practice
34+
35+
- [Python Tutor visualization for this concept](https://pythontutor.com/...)
36+
- [Related Exercism exercise](https://exercism.org/tracks/python/...)
37+
38+
---
39+
40+
*Last verified: [YYYY-MM-DD]. If a link is broken, please [open an issue](https://github.com/travisjneuman/learn.python/issues).*

_templates/SOLUTION_TEMPLATE.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Solution: [PROJECT_TITLE]
2+
3+
> **STOP** — Have you attempted this project yourself first?
4+
>
5+
> Learning happens in the struggle, not in reading answers.
6+
> Spend at least 20 minutes trying before reading this solution.
7+
> If you are stuck, try the [Walkthrough](./WALKTHROUGH.md) first — it guides
8+
> your thinking without giving away the answer.
9+
10+
---
11+
12+
## Complete solution
13+
14+
```python
15+
"""[Module docstring].
16+
17+
WHY this module exists: [Context from README]
18+
"""
19+
20+
# WHY we import X: [Reason for this import]
21+
import x
22+
23+
24+
def function_name(param: type) -> return_type:
25+
"""[Docstring].
26+
27+
WHY this function: [Design reason — why a separate function?]
28+
WHY this signature: [Parameter choices — why these inputs?]
29+
"""
30+
# WHY this check: [Guard clause reason]
31+
if not param:
32+
raise ValueError("param cannot be empty")
33+
34+
# WHY this approach: [Algorithm or pattern choice]
35+
result = param.process()
36+
37+
return result
38+
```
39+
40+
## Design decisions
41+
42+
| Decision | Why | Alternative considered |
43+
|----------|-----|----------------------|
44+
| [Decision 1] | [Reason] | [What else could work] |
45+
| [Decision 2] | [Reason] | [What else could work] |
46+
| [Decision 3] | [Reason] | [What else could work] |
47+
48+
## Alternative approaches
49+
50+
### Approach B: [Name]
51+
52+
```python
53+
# Different valid approach with trade-offs explained
54+
```
55+
56+
**Trade-off:** [When you would prefer this approach vs the primary one]
57+
58+
### Approach C: [Name] (advanced)
59+
60+
```python
61+
# More sophisticated approach — come back to this after learning [concept]
62+
```
63+
64+
**Trade-off:** [This approach is better when X, but worse when Y]
65+
66+
## What could go wrong
67+
68+
| Scenario | What happens | Prevention |
69+
|----------|-------------|------------|
70+
| [Bad input 1] | [Error/behavior] | [How to handle] |
71+
| [Edge case 1] | [Behavior] | [How to handle] |
72+
| [Edge case 2] | [Behavior] | [How to handle] |
73+
74+
## Key takeaways
75+
76+
1. [Most important lesson from this project]
77+
2. [Second lesson]
78+
3. [Connection to future concepts — "You will use this pattern again in Level X"]

_templates/WALKTHROUGH_TEMPLATE.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Walkthrough: [PROJECT_TITLE]
2+
3+
> This guide walks through the **thinking process** for building this project.
4+
> It does NOT give you the complete solution. For that, see [SOLUTION.md](./SOLUTION.md).
5+
6+
## Before reading this
7+
8+
**Try the project yourself first.** Spend at least 20 minutes.
9+
10+
This walkthrough is for AFTER you have attempted the project. If you have not tried yet, close this file and open the [project README](./README.md).
11+
12+
---
13+
14+
## Understanding the problem
15+
16+
[Restate the problem in plain language. What inputs do we have? What output do we need? What constraints exist?]
17+
18+
## Planning before code
19+
20+
Before writing a single line of Python, think about the steps:
21+
22+
1. [First logical step]
23+
2. [Second logical step]
24+
3. [Third logical step]
25+
26+
```mermaid
27+
flowchart TD
28+
A[Step 1: Read input] --> B[Step 2: Process data]
29+
B --> C[Step 3: Format output]
30+
C --> D[Step 4: Return result]
31+
```
32+
33+
## Step 1: [First subproblem]
34+
35+
[Explain what this step accomplishes and why it comes first.]
36+
37+
```python
38+
# Just this one piece — not the whole solution
39+
def first_piece():
40+
...
41+
```
42+
43+
### Predict before you scroll
44+
45+
What do you think the next step needs to handle? Think about it before reading on.
46+
47+
## Step 2: [Second subproblem]
48+
49+
[Continue building incrementally. Show the thinking, not just the code.]
50+
51+
```python
52+
# Building on step 1
53+
```
54+
55+
## Step 3: Connecting the pieces
56+
57+
[How steps 1 and 2 fit together. Show the structure, not the full implementation.]
58+
59+
## Common mistakes
60+
61+
| Mistake | Why it happens | How to fix |
62+
|---------|---------------|------------|
63+
| [Mistake 1] | [Reason] | [Fix] |
64+
| [Mistake 2] | [Reason] | [Fix] |
65+
| [Mistake 3] | [Reason] | [Fix] |
66+
67+
## Testing your solution
68+
69+
Run the tests to check your work:
70+
71+
```bash
72+
cd <repo-root>/projects/[LEVEL]/[PROJECT]
73+
pytest -q
74+
```
75+
76+
What each test verifies:
77+
- [Test 1]: [What it checks]
78+
- [Test 2]: [What it checks]
79+
80+
## What to explore next
81+
82+
Now that you have a working solution, try these extensions:
83+
84+
1. [Extension idea 1 — builds on what you just learned]
85+
2. [Extension idea 2 — introduces a new concept]

guides/DIAGRAM_INDEX.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Diagram Index
2+
3+
Visual diagrams for every concept in the curriculum. Diagrams use Mermaid syntax, which renders automatically on GitHub and in the mkdocs documentation site.
4+
5+
Each diagram page includes: an overview map, step-by-step execution flow, decision guides for choosing between related patterns, and comparison diagrams.
6+
7+
---
8+
9+
## Beginner Concepts
10+
11+
| Concept | Diagram Page | Diagram Types |
12+
|---------|-------------|---------------|
13+
| Variables | [Diagrams](../concepts/diagrams/what-is-a-variable.md) | Memory model, type conversion flow |
14+
| Loops | [Diagrams](../concepts/diagrams/how-loops-work.md) | For/while flowcharts, loop selection decision tree |
15+
| Types & Conversions | [Diagrams](../concepts/diagrams/types-and-conversions.md) | Type hierarchy, conversion paths |
16+
| Functions | [Diagrams](../concepts/diagrams/functions-explained.md) | Call stack, parameter flow |
17+
| Collections | [Diagrams](../concepts/diagrams/collections-explained.md) | Collection comparison, selection decision tree |
18+
| Files & Paths | [Diagrams](../concepts/diagrams/files-and-paths.md) | File I/O flow, path resolution |
19+
| Errors & Debugging | [Diagrams](../concepts/diagrams/errors-and-debugging.md) | Exception hierarchy, try/except flow |
20+
| Reading Error Messages | [Diagrams](../concepts/diagrams/reading-error-messages.md) | Traceback anatomy, error type decision tree |
21+
22+
## Intermediate Concepts
23+
24+
| Concept | Diagram Page | Diagram Types |
25+
|---------|-------------|---------------|
26+
| Imports | [Diagrams](../concepts/diagrams/how-imports-work.md) | Import resolution, package structure |
27+
| Classes & Objects | [Diagrams](../concepts/diagrams/classes-and-objects.md) | Class hierarchy, MRO, composition |
28+
| Decorators | [Diagrams](../concepts/diagrams/decorators-explained.md) | Decorator call chain, wrapper flow |
29+
| Virtual Environments | [Diagrams](../concepts/diagrams/virtual-environments.md) | Venv isolation, package resolution |
30+
| Comprehensions | [Diagrams](../concepts/diagrams/comprehensions-explained.md) | Data transformation flow |
31+
| Type Hints | [Diagrams](../concepts/diagrams/type-hints-explained.md) | Type annotation decision tree |
32+
| Dataclasses | [Diagrams](../concepts/diagrams/dataclasses-explained.md) | Dataclass vs dict vs namedtuple |
33+
34+
## Advanced Concepts
35+
36+
| Concept | Diagram Page | Diagram Types |
37+
|---------|-------------|---------------|
38+
| HTTP | [Diagrams](../concepts/diagrams/http-explained.md) | Request/response sequence, status code flow |
39+
| APIs | [Diagrams](../concepts/diagrams/api-basics.md) | REST flow, authentication sequence |
40+
| Async/Await | [Diagrams](../concepts/diagrams/async-explained.md) | Event loop, async state machine |
41+
| Generators | [Diagrams](../concepts/diagrams/generators-and-iterators.md) | Iterator protocol, yield flow |
42+
| Collections Deep Dive | [Diagrams](../concepts/diagrams/collections-deep-dive.md) | Specialized collection selection |
43+
44+
---
45+
46+
## How to Read Mermaid Diagrams
47+
48+
Mermaid diagrams render automatically on GitHub. If you are viewing these files locally in a text editor, you will see the raw Mermaid syntax. To render them:
49+
50+
1. **GitHub:** Just open the file — diagrams render automatically
51+
2. **VS Code:** Install the "Mermaid Markdown Syntax Highlighting" extension
52+
3. **mkdocs site:** Visit the [documentation site](https://travisjneuman.github.io/learn.python)
53+
4. **Mermaid Live Editor:** Paste the code at [mermaid.live](https://mermaid.live)
54+
55+
---
56+
57+
| [Home](../README.md) |
58+
|:---:|

0 commit comments

Comments
 (0)