- Move all documentation to docs/ directory with clear organization - Use lowercase-with-dashes naming convention (modern standard) - Organize by audience: students/, development/, pedagogy/ - Create comprehensive docs/README.md index - Clean up root directory (only README.md and quickstart.md remain) Structure: docs/ ├── pedagogy/ # Educational philosophy ├── development/ # Module development guides ├── students/ # Student-facing documentation └── README.md # Documentation index This makes the project more professional and easier to navigate.
6.8 KiB
🎓 TinyTorch Pedagogical Principles
The "Build → Use → Understand" Framework for ML Systems Education
This document defines the core pedagogical principles that guide TinyTorch module development and student learning progression.
🎯 Core Learning Philosophy
Build → Use → Understand → Repeat
Each module follows this fundamental cycle:
- Build the fundamental building block from scratch
- Use it immediately to see concrete results
- Understand how it works through experimentation
- Repeat with the next building block
This approach ensures students get immediate positive feedback and concrete understanding before moving to abstract concepts.
🧱 Building Block Progression
The Fundamental Insight
ML systems are compositions of simple building blocks. Students learn best when they:
- Build each block independently
- See it work immediately
- Understand its role in the larger system
- Compose it with other blocks
Progressive Complexity
Tensors → Layers → Networks → Training → Production
↓ ↓ ↓ ↓ ↓
Build Build Build Build Build
↓ ↓ ↓ ↓ ↓
Use Use Use Use Use
↓ ↓ ↓ ↓ ↓
Understand Understand Understand Understand Understand
📚 Module Design Principles
1. Immediate Gratification
- Students should see results within minutes of starting a module
- Every building block should produce visible output
- No abstract theory without concrete implementation
2. Incremental Complexity
- Start with the simplest possible implementation
- Add complexity only when students understand the basics
- Each addition should be motivated by a clear need
3. Hands-On Learning
- Students write all code themselves
- No black boxes or "magic" functions
- Understanding comes through implementation
4. Real-World Relevance
- Every building block maps to industry frameworks
- Students understand how their code relates to PyTorch/TensorFlow
- Implementations are simplified but not toy examples
🎯 Specific Module Progression
Module 1: Tensors ✅
Build: N-dimensional arrays with basic operations Use: Create tensors, perform math, visualize results Understand: How ML data flows through memory
Key Insight: "ML is just math on multi-dimensional arrays"
Module 2: Layers 🎯 (Next)
Build: Dense layers (y = Wx + b) and activation functions
Use: Transform tensors, see data flow through transformations
Understand: How neural networks transform information
Key Insight: "Neural networks are function composition"
Module 3: Networks
Build: Compose layers into complete architectures (MLP, CNN) Use: Build networks, run inference on real data Understand: How architecture affects capability
Key Insight: "Architecture determines what problems you can solve"
Module 4: Training
Build: Automatic differentiation and optimizers Use: Train networks, watch them learn Understand: How networks improve through experience
Key Insight: "Learning is optimization in high-dimensional space"
Module 5: Production
Build: Deployment, monitoring, and scaling systems Use: Deploy models, monitor performance Understand: How ML systems work in the real world
Key Insight: "Production is where theory meets reality"
🔍 Assessment Philosophy
Immediate Feedback
- Tests provide instant validation
- Students know immediately if they're on track
- No waiting for instructor feedback
Dual Testing Architecture
- Package tests: Ensure student experience works
- Module tests: Provide stretch goals and deeper validation
- Both must pass for module completion
Progressive Validation
- Each module builds on previous ones
- Integration tests ensure components work together
- Students can't proceed with broken foundations
🎨 Implementation Guidelines
For Module Developers
-
Start with the simplest possible example
- What's the minimal code that demonstrates the concept?
- Can students see results in < 5 lines of code?
-
Build up complexity gradually
- Add one feature at a time
- Each addition should be motivated by a clear problem
- Students should understand why each piece is needed
-
Provide immediate visual feedback
- Print results, show plots, demonstrate changes
- Students should see their code working
- Abstract concepts need concrete demonstrations
-
Connect to bigger picture
- How does this building block fit into ML systems?
- What problems does it solve?
- How does it relate to industry frameworks?
For Students
-
Don't skip the "Use" step
- Always run the code and see results
- Experiment with different inputs
- Break things to understand boundaries
-
Build intuition before memorizing
- Understand what the code does before how it works
- Play with examples before reading theory
- Ask "what if" questions
-
Connect to previous modules
- How does this build on what you learned before?
- What problems does this solve that previous modules couldn't?
- How do the pieces fit together?
🎯 Success Metrics
Student Success Indicators
- Can explain what each building block does in simple terms
- Can modify code to solve related problems
- Can debug issues by understanding the underlying system
- Can connect module concepts to real-world ML systems
Module Success Indicators
- Students complete modules with high engagement
- Tests pass consistently across different student backgrounds
- Students can apply concepts to new problems
- Smooth progression to next module
🔄 Continuous Improvement
Feedback Loops
- Monitor where students get stuck
- Identify concepts that need more scaffolding
- Adjust complexity based on student success rates
- Iterate on examples and explanations
Evolution Principles
- Maintain the "Build → Use → Understand" cycle
- Keep immediate feedback and concrete results
- Preserve the building block progression
- Adapt examples to current ML landscape
📖 References
This pedagogical approach draws from:
- Constructivist Learning Theory: Knowledge built through active construction
- Experiential Learning: Learning through direct experience and reflection
- Scaffolded Learning: Temporary support structures that build independence
- Systems Thinking: Understanding how components interact in complex systems
This document should guide all TinyTorch module development decisions. When in doubt, return to the core principle: Build → Use → Understand → Repeat