Skip to content

Commit 05f3eff

Browse files
travisjneumanclaude
andcommitted
feat: implement all 45 enhancements — bespoke projects, modernization, platform tools
Transformative update implementing the full ENHANCEMENT_ROADMAP.md: Tier 0 — Bug Fixes: - Fix hardcoded path in tools/rebuild_navigation.py - Fix broken elite links in 14_NAVIGATION_AND_STUDY_WORKFLOW.md - Fix unquoted variables in shell scripts - Add ripgrep guards to all shell scripts - Fix XXXXX and 0.XXXs placeholders - Extend portable path checker to scan .py files - Correct project count from 261 to 246 Tier 1 — Quick Wins: - Add Python Tutor visualization links to all 15 concept docs - Create reading-error-messages.md concept doc + quiz - Create FEATURE_UNLOCK.md progressive disclosure chart - Create AI_USAGE_GUIDE.md with per-level AI policies - Fix dict ordering in collections-explained.md (Python 3.7+) - Consolidate duplicate Practice sections across concept docs - Create 15 advanced coding challenges (Level 6+) - Normalize quiz input handling across all 20 quiz files Tier 2 — Strategic Content: - Replace ALL 165 templated project.py files with bespoke code - Replace ALL 165 templated test files with project-specific tests - Update ALL 165 README Alter/Break/Fix/Explain sections - Create project-specific sample data for all 165 projects - Adopt uv as default package manager (setup guide, CI) - Create type-hints, dataclasses, match-case, modern-tooling concept docs - Add PR-triggered CI with ruff and py_compile checks - Create TEACHING_GUIDE, PORTFOLIO_GUIDE, CAREER_READINESS, FAST_TRACK - Create CHANGELOG.md, expand certification protocol - Add shields.io badges to README Tier 3 — Major Initiatives: - Configure mkdocs-material GitHub Pages site with 234-page nav - Create Pyodide browser exercises for Level 00 (CodeMirror + Pyodide) - Create Python CI equivalents (no bash/ripgrep dependency) - Implement SM-2 spaced repetition for flashcard runner - Generate SVG level completion badges - Create badge generator tool 778 files changed across the entire curriculum. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2174b56 commit 05f3eff

File tree

810 files changed

+57151
-24584
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

810 files changed

+57151
-24584
lines changed

.github/workflows/curriculum-checks.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: Curriculum Checks
22

33
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
48
workflow_dispatch:
59
inputs:
610
full_smoke:
@@ -23,6 +27,21 @@ jobs:
2327
with:
2428
python-version: '3.12'
2529

30+
- name: Install uv
31+
run: pip install uv
32+
33+
- name: Install ruff
34+
run: uv pip install ruff --system
35+
36+
- name: Ruff lint check
37+
run: ruff check .
38+
39+
- name: Python syntax check (py_compile)
40+
run: |
41+
find . -name "*.py" -not -path "./.venv/*" | while read f; do
42+
python -c "import py_compile; py_compile.compile('$f', doraise=True)" || exit 1
43+
done
44+
2645
- name: Markdown link checks
2746
run: ./tools/check_markdown_links.sh
2847

@@ -62,5 +81,8 @@ jobs:
6281
with:
6382
python-version: '3.12'
6483

84+
- name: Install uv
85+
run: pip install uv
86+
6587
- name: Full curriculum checks
6688
run: ./tools/run_all_curriculum_checks.sh --full

.github/workflows/deploy-docs.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Deploy Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "**.md"
9+
- "mkdocs.yml"
10+
- ".github/workflows/deploy-docs.yml"
11+
workflow_dispatch:
12+
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
concurrency:
19+
group: "pages"
20+
cancel-in-progress: false
21+
22+
jobs:
23+
build:
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- uses: actions/setup-python@v5
29+
with:
30+
python-version: "3.12"
31+
32+
- name: Install dependencies
33+
run: |
34+
pip install \
35+
mkdocs-material \
36+
"mkdocs-material[imaging]" \
37+
pymdown-extensions
38+
39+
- name: Build site
40+
run: mkdocs build --strict
41+
env:
42+
ENABLE_PDF_EXPORT: 0
43+
44+
- name: Upload artifact
45+
uses: actions/upload-pages-artifact@v3
46+
with:
47+
path: site
48+
49+
deploy:
50+
environment:
51+
name: github-pages
52+
url: ${{ steps.deployment.outputs.page_url }}
53+
runs-on: ubuntu-latest
54+
needs: build
55+
steps:
56+
- name: Deploy to GitHub Pages
57+
id: deployment
58+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ practice/flashcards/.review-state.json
1111

1212
# Personal learning workspace
1313
learning/
14+
15+
# MkDocs build output
16+
site/

03_SETUP_ALL_PLATFORMS.md

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,41 @@ mkdir -p "$HOME/python_sme/projects" "$HOME/python_sme/templates" "$HOME/python_
143143
- Create a `python_sme` folder in your Python app workspace.
144144
- Create subfolders: `projects`, `templates`, `notes`.
145145

146+
### Step 3.5 - Install uv (recommended package manager)
147+
148+
**uv** is a modern, fast replacement for pip and venv. It is used throughout this curriculum.
149+
150+
#### Windows PowerShell
151+
```powershell
152+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
153+
uv --version
154+
```
155+
156+
#### macOS/Linux
157+
```bash
158+
curl -LsSf https://astral.sh/uv/install.sh | sh
159+
uv --version
160+
```
161+
162+
#### Android (Termux)
163+
```bash
164+
pip install uv
165+
uv --version
166+
```
167+
168+
Expected output:
169+
- `uv x.x.x` (version number)
170+
171+
> **If you prefer pip:** All `uv` commands in this curriculum have pip equivalents. Replace `uv venv` with `python -m venv .venv` and `uv pip install` with `pip install`. Everything else stays the same.
172+
146173
### Step 4 - Create first project and virtual environment
147174

148175
#### Windows PowerShell
149176
```powershell
150177
cd $HOME\Documents\python_sme\projects
151178
mkdir hello_sme
152179
cd hello_sme
153-
python -m venv .venv
180+
uv venv
154181
.\.venv\Scripts\Activate.ps1
155182
python --version
156183
```
@@ -159,12 +186,14 @@ Expected output:
159186
- Prompt starts with `(.venv)`.
160187
- Python version prints.
161188

189+
> **pip fallback:** Replace `uv venv` with `python -m venv .venv`.
190+
162191
#### macOS/Linux
163192
```bash
164193
cd "$HOME/python_sme/projects"
165194
mkdir -p hello_sme
166195
cd hello_sme
167-
python3 -m venv .venv
196+
uv venv
168197
source .venv/bin/activate
169198
python --version
170199
```
@@ -173,12 +202,14 @@ Expected output:
173202
- Prompt starts with `(.venv)`.
174203
- Python version prints.
175204

205+
> **pip fallback:** Replace `uv venv` with `python3 -m venv .venv`.
206+
176207
#### Android (Termux)
177208
```bash
178209
cd "$HOME/python_sme/projects"
179210
mkdir -p hello_sme
180211
cd hello_sme
181-
python -m venv .venv
212+
uv venv
182213
source .venv/bin/activate
183214
python --version
184215
```
@@ -187,6 +218,8 @@ Expected output:
187218
- Prompt starts with `(.venv)` if your shell prompt supports it.
188219
- Python version prints.
189220

221+
> **pip fallback:** Replace `uv venv` with `python -m venv .venv`.
222+
190223
#### iOS
191224
- Some iOS Python apps do not support full `venv` behavior.
192225
- Use a project folder and keep dependencies minimal in early labs.
@@ -196,15 +229,15 @@ Expected output:
196229

197230
Desktop and Android:
198231
```bash
199-
python -m pip install --upgrade pip
200-
python -m pip install pytest
232+
uv pip install pytest
201233
pytest --version
202234
```
203235

204236
Windows note: same commands work inside activated PowerShell venv.
205237

238+
> **pip fallback:** Replace `uv pip install pytest` with `python -m pip install pytest`.
239+
206240
Expected output:
207-
- pip upgrade completes.
208241
- pytest version is displayed.
209242

210243
### Step 6 - Create first script and first test
@@ -280,9 +313,12 @@ Secret handling rules:
280313
```powershell
281314
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
282315
```
316+
- `uv` not found:
317+
- Re-run the install command from Step 3.5.
318+
- Or fall back to pip: replace `uv pip install` with `pip install` and `uv venv` with `python -m venv .venv`.
283319
- `pytest` not found:
284320
- Confirm venv is active.
285-
- Run `python -m pip install pytest`.
321+
- Run `uv pip install pytest` (or `pip install pytest`).
286322
- macOS shows old system Python:
287323
- Use `python3` for install and venv creation.
288324
- Linux missing `venv` module:

14_NAVIGATION_AND_STUDY_WORKFLOW.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,23 @@ Use this file to keep study flow clean and avoid navigation friction.
2020
14. [14_NAVIGATION_AND_STUDY_WORKFLOW.md](./14_NAVIGATION_AND_STUDY_WORKFLOW.md)
2121

2222
## Elite extension sequence (after baseline completion)
23-
1. [36_ELITE_ENGINEERING_TRACK.md](./36_ELITE_ENGINEERING_TRACK.md)
24-
2. [37_QUARTERLY_EXAMS_AND_DEFENSES.md](./37_QUARTERLY_EXAMS_AND_DEFENSES.md)
25-
3. [38_SYSTEM_DESIGN_AND_RFCS.md](./38_SYSTEM_DESIGN_AND_RFCS.md)
26-
4. [39_PRODUCTION_PLATFORM_LAB.md](./39_PRODUCTION_PLATFORM_LAB.md)
27-
5. [40_SECURITY_COMPLIANCE_HARDENING.md](./40_SECURITY_COMPLIANCE_HARDENING.md)
28-
6. [41_PERFORMANCE_ENGINEERING_LAB.md](./41_PERFORMANCE_ENGINEERING_LAB.md)
29-
7. [42_OPEN_SOURCE_CONTRIBUTION_LANE.md](./42_OPEN_SOURCE_CONTRIBUTION_LANE.md)
30-
8. [43_PUBLIC_PROOF_OF_WORK_PORTFOLIO.md](./43_PUBLIC_PROOF_OF_WORK_PORTFOLIO.md)
31-
9. [44_SME_INTERVIEW_AND_DEBATE_BANK.md](./44_SME_INTERVIEW_AND_DEBATE_BANK.md)
32-
10. [45_MASTERY_TELEMETRY_AND_REMEDIATION.md](./45_MASTERY_TELEMETRY_AND_REMEDIATION.md)
23+
1. [36_ELITE_ENGINEERING_TRACK.md](./curriculum/36_ELITE_ENGINEERING_TRACK.md)
24+
2. [37_QUARTERLY_EXAMS_AND_DEFENSES.md](./curriculum/37_QUARTERLY_EXAMS_AND_DEFENSES.md)
25+
3. [38_SYSTEM_DESIGN_AND_RFCS.md](./curriculum/38_SYSTEM_DESIGN_AND_RFCS.md)
26+
4. [39_PRODUCTION_PLATFORM_LAB.md](./curriculum/39_PRODUCTION_PLATFORM_LAB.md)
27+
5. [40_SECURITY_COMPLIANCE_HARDENING.md](./curriculum/40_SECURITY_COMPLIANCE_HARDENING.md)
28+
6. [41_PERFORMANCE_ENGINEERING_LAB.md](./curriculum/41_PERFORMANCE_ENGINEERING_LAB.md)
29+
7. [42_OPEN_SOURCE_CONTRIBUTION_LANE.md](./curriculum/42_OPEN_SOURCE_CONTRIBUTION_LANE.md)
30+
8. [43_PUBLIC_PROOF_OF_WORK_PORTFOLIO.md](./curriculum/43_PUBLIC_PROOF_OF_WORK_PORTFOLIO.md)
31+
9. [44_SME_INTERVIEW_AND_DEBATE_BANK.md](./curriculum/44_SME_INTERVIEW_AND_DEBATE_BANK.md)
32+
10. [45_MASTERY_TELEMETRY_AND_REMEDIATION.md](./curriculum/45_MASTERY_TELEMETRY_AND_REMEDIATION.md)
3333

3434
## Universal learner-adaptive sequence (final assurance layer)
35-
1. [46_ACCESSIBILITY_AND_LEARNING_PROFILE_PLAYBOOK.md](./46_ACCESSIBILITY_AND_LEARNING_PROFILE_PLAYBOOK.md)
36-
2. [47_DIAGNOSTIC_AND_PERSONALIZED_STUDY_ENGINE.md](./47_DIAGNOSTIC_AND_PERSONALIZED_STUDY_ENGINE.md)
37-
3. [48_MISCONCEPTION_AND_FAILURE_ATLAS_EXPANDED.md](./48_MISCONCEPTION_AND_FAILURE_ATLAS_EXPANDED.md)
38-
4. [49_COMPETENCY_COVERAGE_AND_GAP_CLOSURE_MATRIX.md](./49_COMPETENCY_COVERAGE_AND_GAP_CLOSURE_MATRIX.md)
39-
5. [50_CERTIFICATION_GRADE_COMPLETION_PROTOCOL.md](./50_CERTIFICATION_GRADE_COMPLETION_PROTOCOL.md)
35+
1. [46_ACCESSIBILITY_AND_LEARNING_PROFILE_PLAYBOOK.md](./curriculum/46_ACCESSIBILITY_AND_LEARNING_PROFILE_PLAYBOOK.md)
36+
2. [47_DIAGNOSTIC_AND_PERSONALIZED_STUDY_ENGINE.md](./curriculum/47_DIAGNOSTIC_AND_PERSONALIZED_STUDY_ENGINE.md)
37+
3. [48_MISCONCEPTION_AND_FAILURE_ATLAS_EXPANDED.md](./curriculum/48_MISCONCEPTION_AND_FAILURE_ATLAS_EXPANDED.md)
38+
4. [49_COMPETENCY_COVERAGE_AND_GAP_CLOSURE_MATRIX.md](./curriculum/49_COMPETENCY_COVERAGE_AND_GAP_CLOSURE_MATRIX.md)
39+
5. [50_CERTIFICATION_GRADE_COMPLETION_PROTOCOL.md](./curriculum/50_CERTIFICATION_GRADE_COMPLETION_PROTOCOL.md)
4040

4141
## Recommended weekly loop
4242
1. Read one section.

AI_USAGE_GUIDE.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# AI Usage Guide
2+
3+
How and when to use AI tools (ChatGPT, Claude, Copilot, etc.) at each level of the curriculum. The goal is to build real skill, not just get answers.
4+
5+
## The Golden Rule
6+
7+
**Understand before you copy.** If you cannot explain what a piece of code does line by line, you do not understand it yet. Using AI to skip understanding is borrowing from your future self.
8+
9+
## Guidelines by Level
10+
11+
### Level 00 -- No AI
12+
13+
Type everything yourself. Every character. This builds the muscle memory and mental model that everything else depends on.
14+
15+
- Do not use AI to write code
16+
- Do not use AI to explain error messages
17+
- Do not use AI to check your work
18+
- **Why:** You need to feel the keyboard, make typos, fix them yourself. This is how your brain builds the connection between intent and code.
19+
20+
### Levels 0-2 -- AI for Error Messages Only
21+
22+
You may ask AI to explain an error message *after* you have tried to understand it yourself.
23+
24+
- Read the error message yourself first (see [Reading Error Messages](concepts/reading-error-messages.md))
25+
- Try to fix it based on the line number and error type
26+
- If stuck after 2-3 attempts, paste the error into an AI and ask "what does this error mean?"
27+
- **Do not** paste your code and ask "fix this"
28+
- **Do not** ask AI to write code for you
29+
- **Why:** Error messages are a language. You need to learn to read them, but it is okay to get translation help while learning.
30+
31+
### Levels 3-4 -- AI for Debugging Hints
32+
33+
You have the fundamentals. Now AI can help you debug, but you still write all the code.
34+
35+
- Write your code first, always
36+
- When stuck on a bug, describe the problem to the AI in words before sharing code
37+
- Ask "what could cause this behavior?" rather than "fix my code"
38+
- Use AI to explain library documentation you find confusing
39+
- **Do not** ask AI to generate functions or modules
40+
- **Why:** Describing a problem clearly is a skill. If you can explain what is wrong, you are halfway to fixing it.
41+
42+
### Levels 5-6 -- AI for Code Review
43+
44+
You write it, AI reviews it. This is how you level up from working code to good code.
45+
46+
- Write your solution completely before asking AI for feedback
47+
- Ask: "What could I improve in this code?" or "Are there edge cases I missed?"
48+
- Use AI to learn about design patterns relevant to your project
49+
- AI can explain new concepts (SQL, scheduling, templates) that the curriculum introduces
50+
- **Do not** ask AI to write the initial implementation
51+
- **Why:** Code review is how professionals grow. Getting feedback on *your* code teaches you patterns that stick.
52+
53+
### Levels 7-8 -- AI Pair Programming
54+
55+
You drive, AI assists. Think of it like pair programming where you are the driver.
56+
57+
- You decide the architecture and approach
58+
- AI can help implement specific functions after you describe what they should do
59+
- AI can suggest test cases you might have missed
60+
- Discuss trade-offs with AI: "Should I use caching here? What are the pros and cons?"
61+
- **Always** understand what the AI-generated code does before using it
62+
- **Why:** At this level you are learning to evaluate and direct, not just write. Working with AI is a professional skill.
63+
64+
### Levels 9-10 -- Full AI Collaboration
65+
66+
You focus on architecture, design, and decisions. AI handles routine implementation.
67+
68+
- Use AI for boilerplate, scaffolding, and repetitive patterns
69+
- Focus your energy on system design, trade-offs, and architecture decisions
70+
- Use AI to explore approaches: "Give me three ways to implement event sourcing in Python"
71+
- Review all AI-generated code critically -- AI makes mistakes too
72+
- **Why:** Senior engineers spend most of their time on design and review, not typing code. This mirrors real-world practice.
73+
74+
## General Principles
75+
76+
**Build muscle memory first.** Levels 00-2 exist to wire your brain for Python. Skipping this with AI is like using a calculator before learning multiplication -- you will be permanently dependent.
77+
78+
**Test AI suggestions.** AI confidently generates wrong code. Always run it, test it, and verify it works. If you cannot tell whether AI code is correct, you are not ready to use it.
79+
80+
**Describe before you paste.** Before sharing code with AI, try to describe your problem in words. This forces you to think about what you know and what you do not. Often, the act of describing it reveals the answer.
81+
82+
**AI is a tool, not a teacher.** AI can explain and generate, but it cannot assess your understanding. Only you know whether you truly get it or are just copying patterns.
83+
84+
**Never submit AI-generated work as your own understanding.** If a project asks you to explain your approach in `notes.md`, write it in your own words. The notes are for you, not for a grade.
85+
86+
## Quick Reference
87+
88+
| Level | AI Allowed For | AI Not Allowed For |
89+
|-------|---------------|-------------------|
90+
| 00 | Nothing | Everything |
91+
| 0-2 | Explaining error messages | Writing code, fixing bugs |
92+
| 3-4 | Debugging hints, explaining docs | Writing code, generating functions |
93+
| 5-6 | Code review, explaining concepts | Initial implementation |
94+
| 7-8 | Pair programming (you drive) | Unsupervised code generation |
95+
| 9-10 | Full collaboration | Skipping architecture thinking |
96+
97+
---
98+
99+
| [Home](README.md) |
100+
|:---:|

0 commit comments

Comments
 (0)