Files
TinyTorch/docs/pedagogy/pedagogical-principles.md
Vijay Janapa Reddi 53ee9f17f3 📁 Reorganize documentation with modern naming
- 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.
2025-07-10 20:16:26 -04:00

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:

  1. Build the fundamental building block from scratch
  2. Use it immediately to see concrete results
  3. Understand how it works through experimentation
  4. 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

  1. Start with the simplest possible example

    • What's the minimal code that demonstrates the concept?
    • Can students see results in < 5 lines of code?
  2. 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
  3. Provide immediate visual feedback

    • Print results, show plots, demonstrate changes
    • Students should see their code working
    • Abstract concepts need concrete demonstrations
  4. 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

  1. Don't skip the "Use" step

    • Always run the code and see results
    • Experiment with different inputs
    • Break things to understand boundaries
  2. Build intuition before memorizing

    • Understand what the code does before how it works
    • Play with examples before reading theory
    • Ask "what if" questions
  3. 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