Commit Graph

62 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
bf6ba7233c Reorganize modules: Delete config, split training into optimizers + training
- Delete 09_config module (redundant with tinytorch/configs/)
- Split training into two focused modules:
  - 08_optimizers: SGD, Adam, learning rate scheduling (core algorithms)
  - 09_training: Training loops, metrics, checkpointing (orchestration)
- Shift subsequent modules down by one number
- Better separation of concerns: algorithms vs. systems coordination
- Follows PyTorch structure: torch.optim vs training scripts

Final progression (00-16):
00_setup → 01_tensor → 02_activations → 03_layers → 04_networks →
05_dataloader → 06_cnn → 07_autograd → 08_optimizers → 09_training →
10_profiling → 11_compression → 12_kernels → 13_benchmarking →
14_mlops → 15_transformer
2025-07-12 02:20:50 -04:00
Vijay Janapa Reddi
2476ed2e04 Complete numbered module progression (00-15)
- Add CNN as module 06 (after networks, before autograd)
- Shift all subsequent modules up by one number
- Add Transformer as module 15 (advanced/final module)
- Complete logical progression from foundations to production systems

Final progression:
00_setup → 01_tensor → 02_activations → 03_layers → 04_networks →
05_dataloader → 06_cnn → 07_autograd → 08_training → 09_config →
10_profiling → 11_compression → 12_kernels → 13_benchmarking →
14_mlops → 15_transformer

Clear student learning path: Foundation → Core ML → Advanced Architectures →
Training Systems → Production Systems → Advanced Topics
2025-07-12 02:16:09 -04:00
Vijay Janapa Reddi
faada251ea Fix test imports to use rock solid foundation approach
- Update all test files to import from tinytorch.core.* instead of relative paths
- Consistent with rock solid foundation principle
- Tests now use stable package imports, not local module imports
- Ensures tests validate the actual exported package functionality
- Aligns with production usage patterns
2025-07-12 02:13:31 -04:00
Vijay Janapa Reddi
2cd81ae335 Add numbered prefixes to complete modules
- Rename complete modules to numbered progression:
  - setup → 00_setup
  - tensor → 01_tensor
  - activations → 02_activations
  - layers → 03_layers
  - networks → 04_networks
  - dataloader → 05_dataloader

- Update test imports to use new numbered module names
- Keep incomplete modules (autograd, training, etc.) unnumbered
- Clear progression: 6 complete modules ready for students
- Maintains rock solid foundation approach with proper imports
2025-07-12 02:12:12 -04:00
Vijay Janapa Reddi
1ec820268d Revert to rock solid foundation approach for module imports
- Fix module imports to use tinytorch.core.* instead of local module imports
- Activations module now imports from tinytorch.core.tensor for stability
- Layers module imports from tinytorch.core.tensor and tinytorch.core.activations
- Test files updated to use main package imports for dependencies
- This ensures students can focus on current module without dependency issues
- Previous modules are 'locked in' and guaranteed to work
- Mirrors real-world usage patterns like PyTorch
- Maintains educational progression while ensuring system stability
2025-07-12 02:00:30 -04:00
Vijay Janapa Reddi
e7775535f8 Enhance activations module with visualization system and proper structure
- Reorganize hidden solutions to follow correct NBDev pattern (after each student implementation)
- Add comprehensive visualization system with _should_show_plots() control
- Implement smart test/development mode detection to suppress visualizations during pytest
- Add individual activation function plots and sample data visualizations
- Include comprehensive comparison plots for all activation functions
- Maintain educational inline tests with immediate feedback
- All 24 tests pass cleanly with proper visualization control
- Follows same structure as layers and tensor modules

Features:
- ReLU, Sigmoid, Tanh, Softmax visualizations with mathematical properties
- Real-time visual feedback during development
- Clean test execution without visual noise
- Educational context and use-case guidance for each activation
2025-07-12 01:41:11 -04:00
Vijay Janapa Reddi
b93fc84e19 Enhance inline testing for better student experience
- Add comprehensive step-by-step inline tests to activations module
- Each activation function now has immediate feedback tests
- Tests check mathematical properties, edge cases, and numerical stability
- Provide clear success/failure messages with actionable guidance
- Create comprehensive testing guidelines document
- Document two-tier testing approach: inline tests for learning, pytest for validation
- All existing tests still pass, enhanced learning experience
2025-07-12 01:16:25 -04:00
Vijay Janapa Reddi
2cfe8ce001 Refactor activations module for consistency and clarity
- Remove duplicate class definitions (was 800 lines → 517 lines)
- Follow consistent educational pattern like other modules
- Improve Build → Use → Reflect pedagogical framework
- Clean up TODO sections with proper implementation guidance
- Add comprehensive docstrings and examples
- Organize student and instructor implementations properly
- Maintain all functionality while improving readability
- All tests still pass (24/24 activations tests)
2025-07-12 01:10:19 -04:00
Vijay Janapa Reddi
9b04d79cd4 Fix clean command --all flag to be consistent
- Change --all flag meaning from 'clean both file types' to 'clean all modules'
- Make clean command consistent with test and export commands
- Require explicit module name or --all flag (no implicit behavior)
- Update help text and examples
- Now supports both:
  - tito module clean tensor (specific module)
  - tito module clean --all (all modules)
2025-07-12 01:07:09 -04:00
Vijay Janapa Reddi
718f52380e Improve CLI: remove redundant --module flags
- Update test, export, and clean commands to use positional arguments
- Change from 'tito module test --module dataloader' to 'tito module test dataloader'
- Eliminates redundant --module flag within module command group
- Update help text and examples to reflect new syntax
- Maintains backward compatibility with --all flag
- More intuitive and consistent CLI design
2025-07-12 00:56:00 -04:00
Vijay Janapa Reddi
6af02a703a refactor: standardize module export command with --all flag
- Move export functionality from 'tito package export' to 'tito module export'
- Require --all flag for exporting all modules (consistent with test command)
- Remove export from package command group to eliminate duplication
- Update help text and examples across all commands
- Fix tensor module arithmetic operators for complete functionality
- Clean up duplicate _quarto.yml and sidebar.yml files in modules/

This creates a consistent CLI pattern:
- tito module export --all (export all modules)
- tito module export --module <name> (export specific module)
- tito module test --all (test all modules)
- tito module test --module <name> (test specific module)
2025-07-12 00:36:59 -04:00
Vijay Janapa Reddi
5514065403 Simplify module.yaml and enhance export command with real export targets
- Remove redundant fields from module.yaml files: exports_to, files, components
- Keep only essential system metadata: name, title, description, dependencies
- Export command now reads actual export targets from dev files (#| default_exp directive)
- Status command updated to use dev files as source of truth for export targets
- Export command shows detailed source → target mapping for better clarity
- Dependencies field retained as it's useful for CLI module ordering and prerequisites
- Eliminates duplication between YAML and dev files - dev files are the real truth
2025-07-12 00:05:45 -04:00
Vijay Janapa Reddi
cd89364a69 Add difficulty ratings to all module README files
- Add Module Info sections with difficulty ratings to all README.md files
- Use consistent 4-star difficulty scale:  Beginner,  Intermediate,  Advanced,  Expert
- Include time estimates, prerequisites, and next steps for each module
- Maintain clear separation: README.md = student experience, module.yaml = system metadata
- Difficulty progression: Setup () → Tensor/Activations/Layers () → Networks/CNN/DataLoader () → Transformer ()
- Help students plan their learning journey and set appropriate expectations
2025-07-11 23:53:43 -04:00
Vijay Janapa Reddi
856f1f47e8 Add module clean command
- Add new CleanCommand for cleaning up module directories
- Supports cleaning notebooks (*.ipynb) and cache files (__pycache__, *.pyc)
- Can clean specific modules or all modules
- Provides preview of files to be cleaned with confirmation
- Includes --force flag to skip confirmation
- Integrates with module command group as 'tito module clean'
- Preserves Python source files (*_dev.py) and other important files
- Fixes issue with duplicate file removal from __pycache__ directories
2025-07-11 23:48:26 -04:00
Vijay Janapa Reddi
de40de5b11 Remove redundant py_to_notebook tool in favor of Jupytext
- Delete bin/py_to_notebook.py and tito/tools/py_to_notebook.py
- Update notebooks command to use Jupytext directly
- Jupytext is already configured in all *_dev.py files
- Simpler, more standard workflow using established tools
- Better integration with NBDev ecosystem

Benefits:
- Eliminates duplicate conversion tools
- Uses industry-standard Jupytext instead of custom tool
- Reduces maintenance burden
- Better error handling and compatibility
2025-07-11 23:31:55 -04:00
Vijay Janapa Reddi
73b39395eb Remove version field from module metadata
- Remove version field from all module.yaml files
- Update template generator to exclude version field
- Further simplify metadata to focus on system information only
- Status remains dynamically determined by test results
2025-07-11 23:23:10 -04:00
Vijay Janapa Reddi
6879d26577 Simplify module metadata to focus on essential system information
- Reduce module.yaml files from 100+ lines to ~25 lines focused on system needs
- Remove pedagogical details (learning objectives, difficulty, time estimates)
- Keep only essential fields: name, title, description, status, dependencies, exports, files, components
- Update status command to work with simplified metadata format
- Update metadata generation script to create simplified templates
- Focus on system metadata for CLI tools and build systems, not educational content

Before: Verbose pedagogical metadata with 20+ fields
After: Concise system metadata with 8 core fields

This aligns with the principle that module.yaml should be for systems, not pedagogy.
2025-07-11 23:02:10 -04:00
Vijay Janapa Reddi
48e62a954a fix: Use concise module titles instead of verbose ones
- Changed all module titles to be short and clean (e.g., 'Autograd' not 'Autograd - Automatic Differentiation')
- Updated metadata generation template to use concise titles by default
- Fixed CLI reference in metadata generator to use new hierarchical structure
- Titles are now consistent: just the module name capitalized
- Detailed descriptions remain in the description field where they belong
2025-07-11 22:40:30 -04:00
Vijay Janapa Reddi
b92642a96e feat: Add comprehensive module metadata system
- Add module.yaml files for setup, tensor, activations, layers, and autograd modules
- Enhanced tito status command with --metadata flag for rich information display
- Created metadata schema with learning objectives, dependencies, components, and more
- Added metadata generation script (bin/generate_module_metadata.py)
- Comprehensive documentation in docs/development/module-metadata-system.md
- Status command now shows module status, difficulty, time estimates, and detailed metadata
- Supports dependency tracking, component-level status, and educational information
- Enables rich CLI experience with structured module information
2025-07-11 22:33:24 -04:00
Vijay Janapa Reddi
69d65d38c3 feat: Add modules command and clean up CLI duplication
- Add new 'tito modules' command for comprehensive module status checking
  - Scans all modules in modules/ directory automatically
  - Shows file structure (dev file, tests, README)
  - Runs tests with --test flag
  - Provides detailed breakdown with --details flag

- Remove duplicate/stub commands:
  - Remove 'tito status' (unimplemented stub)
  - Remove 'tito submit' (unimplemented stub)

- Update 'tito test' command:
  - Focus on individual module testing with detailed output
  - Redirect 'tito test --all' to 'tito modules --test' with recommendation
  - Better error handling with available modules list

- Add comprehensive documentation:
  - docs/development/testing-separation.md - explains module vs package checking
  - docs/development/command-cleanup-summary.md - documents CLI cleanup

Key benefit: Clear separation between module development status (tito modules)
and TinyTorch package functionality (tito info) with no confusing overlaps.
2025-07-11 22:14:53 -04:00
Vijay Janapa Reddi
8331f93438 refactor: rename data module to dataloader
- Rename modules/data/ → modules/dataloader/
- Rename data_dev.py → dataloader_dev.py
- Update NBDev export target: core.data → core.dataloader
- Rename test files: test_data.py → test_dataloader.py
- Update package exports to tinytorch.core.dataloader
- Update module imports and internal references

This makes the module name more descriptive and aligned with ML industry standards.
2025-07-11 18:59:09 -04:00
Vijay Janapa Reddi
04a387014c Add test timeouts and local test data for data module
- Added pytest-timeout configuration with 5-minute timeout for all tests
- Added timeout handling to test command with proper error messages
- Created small local test dataset (50 train + 20 test samples) that mimics CIFAR-10 structure
- Updated data module tests to use local test data instead of downloading CIFAR-10
- Tests now run much faster (~0.1s vs ~30s) and don't require internet connection
- Added TestCIFAR10Dataset class that loads from local pickle files
- All test functionality preserved but using local data for speed and reliability
2025-07-11 18:50:05 -04:00
Vijay Janapa Reddi
3cfc257dc9 Fix blocking plt.show() calls during testing
- Fixed plt.show() call in data module to respect _should_show_plots() check
- Protected test code that calls visualization functions in data module
- Protected test code that calls visualization functions in networks module
- All visualization functions now properly skip during testing
- Tests should no longer block waiting for user interaction
2025-07-11 18:44:34 -04:00
Vijay Janapa Reddi
dd706227fd Adds module development documentation
Introduces documentation for TinyTorch module development, including guides for developers and AI assistants.

Provides comprehensive resources for creating high-quality, educational modules, focusing on real-world applications and systems thinking.
2025-07-11 18:38:48 -04:00
Vijay Janapa Reddi
60711bf322 Implements neural network architectures module
Initializes the networks module, enabling the composition of layers into complete neural network architectures.

It introduces sequential networks, MLP creation, and network visualization tools to facilitate architecture understanding and analysis.

Adds practical classification and regression network implementations and network behavior analysis capabilities.
2025-07-11 15:30:21 -04:00
Vijay Janapa Reddi
e5079ecab7 Implements activation functions
Adds ReLU, Sigmoid, and Tanh activation functions, enabling
non-linearity in neural networks.

Includes testing and visualization of each function to ensure
correct behavior and understanding of their properties.
2025-07-11 15:25:27 -04:00
Vijay Janapa Reddi
e6920c9779 Implements 2D Convolutional Neural Network module
Introduces a comprehensive module for 2D Convolutional Neural Networks.

This module provides a foundational understanding of CNNs through:
- Implementation of a naive Conv2D layer with sliding window convolution
- Visualization of kernel operations and feature map construction
- Composition of Conv2D layers with other layers to build a simple ConvNet

This structure provides a step-by-step guide to building and understanding CNNs, with clear examples and tests.
2025-07-11 15:21:58 -04:00
Vijay Janapa Reddi
16b5cda4e3 Implements core neural network layers
This commit introduces the core building blocks for neural networks,
including a naive matrix multiplication implementation and a Dense layer.

It provides a foundation for constructing and experimenting with
neural networks, emphasizing the concept of layers as tensor
transformations and function composition.

The module includes thorough testing and performance comparisons
to demonstrate the importance of optimized operations.
2025-07-11 15:07:54 -04:00
Vijay Janapa Reddi
cb62d505b9 Adds initial Tensor class implementation
Implements the core Tensor class with data handling and properties, including initialization, shape, size, dtype, and string representation.

Adds element-wise addition and multiplication functions for tensors.

Implements tensor addition and multiplication as methods within the Tensor class.
2025-07-11 15:01:28 -04:00
Vijay Janapa Reddi
2f14b51cb5 Improves clarity in CNN notebook
Enhances the notebook by replacing some unicode characters with more standard and universally compatible symbols, improving the overall readability and user experience.
2025-07-11 15:01:16 -04:00
Vijay Janapa Reddi
c0fc3baabd feat: Add consistent 'Where This Code Lives' template across modules
- Add template section to tensor, layers, activations, and cnn modules
- Create docs/development/module-template.md for future reference
- Clarify learning vs building structure consistently
- Show students where their code will live in the final package
- Decouple learning modules from production organization
2025-07-10 23:48:49 -04:00
Vijay Janapa Reddi
36bd50863e feat: Scaffold CNN module for students
- Add cnn_dev.py with NBDev educational pattern, Conv2D for-loop TODO, and all scaffolding
- Add README.md explaining learning goals, what is implemented vs provided, and rationale
- Add tests/test_cnn.py for basic correctness and shape tests
- Generate cnn_dev.ipynb for notebook workflow
2025-07-10 23:34:35 -04:00
Vijay Janapa Reddi
f43711bad4 docs: Clarify MLP is a use case, not a fundamental module; remove empty mlp/ dir
- Added note to Networks README explaining MLP is a pattern of composition, not a new primitive
- Removed empty modules/mlp/ directory for clarity
2025-07-10 23:29:47 -04:00
Vijay Janapa Reddi
cf1c9362c3 feat: Add matrix multiplication scaffolding to Layers module
- Add matmul_naive function with for-loop implementation for learning
- Update Dense layer to support both NumPy (@) and naive matrix multiplication
- Add comprehensive tests comparing both implementations (correctness & performance)
- Include step-by-step computation visualization for 2x2 matrices
- Fix missing imports in tensor.py and activations.py
- Export both tensor and activations modules to package

This provides students with immediate success using NumPy while allowing them to
understand the underlying computation through explicit for-loops. The scaffolding
includes performance comparisons and educational insights about why NumPy is faster.
2025-07-10 23:27:02 -04:00
Vijay Janapa Reddi
00231d98ea feat: add Networks module with forward-pass and visualizations
- Add modules/networks/networks_dev.py and networks_dev.ipynb (Jupytext/nbdev educational pattern)
- Add comprehensive visualizations: architecture, data flow, layer analysis, network comparison
- Add modules/networks/README.md with learning goals, usage, and visualization docs
- Add modules/networks/tests/test_networks.py with thorough tests for composition, MLPs, and visualizations
- Register 'networks' in CLI info and test commands
- Update CLI info command to check layers/networks status
- This module focuses on forward pass only (no training yet)
2025-07-10 23:16:12 -04:00
Vijay Janapa Reddi
b785b706f2 Refactor notebook generation to use separate files for better architecture
- Restored tools/py_to_notebook.py as a focused, standalone tool
- Updated tito notebooks command to use subprocess to call the separate tool
- Maintains clean separation of concerns: tito.py for CLI orchestration, py_to_notebook.py for conversion logic
- Updated documentation to use 'tito notebooks' command instead of direct tool calls
- Benefits: easier debugging, better maintainability, focused single-responsibility modules
2025-07-10 21:57:09 -04:00
Vijay Janapa Reddi
e2b4b120e8 feat: Create clean modular architecture with activations → layers separation
��️ Major architectural improvement implementing clean separation of concerns:

 NEW: Activations Module
- Complete activations module with ReLU, Sigmoid, Tanh implementations
- Educational NBDev structure with student TODOs + instructor solutions
- Comprehensive testing suite (24 tests) with mathematical correctness validation
- Visual learning features with matplotlib plotting (disabled during testing)
- Clean export to tinytorch.core.activations

🔧 REFACTOR: Layers Module
- Removed duplicate activation function implementations
- Clean import from activations module: 'from tinytorch.core.activations import ReLU, Sigmoid, Tanh'
- Updated documentation to reflect modular architecture
- Preserved all existing functionality while improving code organization

🧪 TESTING: Comprehensive Test Coverage
- All 24 activations tests passing 
- All 17 layers tests passing 
- Integration tests verify clean architecture works end-to-end
- CLI testing with 'tito test --module' works for both modules

📦 ARCHITECTURE: Clean Dependency Graph
- activations (math functions) → layers (building blocks) → networks (applications)
- Separation of concerns: pure math vs. neural network components
- Reusable components across future modules
- Single source of truth for activation implementations

�� PEDAGOGY: Enhanced Learning Experience
- Week-sized chunks: students master activations, then build layers
- Clear progression from mathematical foundations to applications
- Real-world software architecture patterns
- Modular design principles in practice

This establishes the foundation for scalable, maintainable ML systems education.
2025-07-10 21:32:25 -04:00
Vijay Janapa Reddi
e2c659023d 🧱 Implement Layers module - Neural Network Building Blocks
 Features:
- Dense layer with Xavier initialization (y = Wx + b)
- Activation functions: ReLU, Sigmoid, Tanh
- Layer composition for building neural networks
- Comprehensive test suite (17 passed, 5 skipped stretch goals)
- Package-level integration tests (14 passed)
- Complete documentation and examples

🎯 Educational Design:
- Follows 'Build → Use → Understand' pedagogical framework
- Immediate visual feedback with working examples
- Progressive complexity from simple layers to full networks
- Students see neural networks as function composition

🧪 Testing Architecture:
- Module tests: 17/17 core tests pass, 5 stretch goals available
- Package tests: 14/14 integration tests pass
- Dual testing supports both learning and validation

📚 Complete Implementation:
- Dense layer with proper weight initialization
- Numerically stable activation functions
- Batch processing support
- Real-world examples (image classification network)
- CLI integration: 'tito test --module layers'

This establishes the fundamental building blocks students need
to understand neural networks before diving into training.
2025-07-10 20:30:31 -04:00
Vijay Janapa Reddi
902b248a5b Implement dual testing architecture
- Fixed module-level tests to work with current implementation
- Added stretch goal testing pattern with pytest.skip()
- Created comprehensive testing documentation
- Both test levels now pass: 29 package tests + 22 module tests
- 11 stretch goals available for student implementation

Package tests (integration):  29/29 passed
Module tests (development):  22/22 passed, 11 skipped (stretch goals)

This provides immediate functionality for students while offering
clear implementation targets for advanced features.
2025-07-10 20:02:53 -04:00
Vijay Janapa Reddi
c5084dad27 Restore comprehensive setup module with full educational content
- Restore complete setup module with system information and developer profiles
- Add NBDev educational patterns with #| export and #| hide directives
- Implement SystemInfo class for platform detection and compatibility checking
- Add DeveloperProfile class with ASCII art customization and personalization
- Include comprehensive educational content with step-by-step learning progression
- Expand test suite to 20 comprehensive tests covering all functionality:
  - Function execution and output validation
  - Arithmetic operations (basic, negative, floating-point)
  - System information collection and compatibility
  - Developer profile creation and customization
  - ASCII art file loading and fallback behavior
  - Error recovery and integration testing
- Update README with complete feature documentation and usage examples
- Convert to executed notebook showing rich output and system information
- Maintain file-based ASCII art system with tinytorch_flame.txt
- All tests passing with professional pytest structure
2025-07-10 19:30:01 -04:00
Vijay Janapa Reddi
1a15dfac58 Convert setup module to use pytest
- Replace manual testing with pytest test classes and assertions
- Add comprehensive test coverage:
  - Function execution without errors
  - Correct output content validation
  - ASCII art file existence and content checks
  - Error handling and fallback behavior
  - Missing file graceful handling
- Update README with pytest testing instructions
- Make testing consistent with other TinyTorch modules
- All 5 tests passing with proper pytest integration
2025-07-10 19:25:52 -04:00
Vijay Janapa Reddi
9d5fc583b5 Simplify setup module to only display ASCII art
- Replace complex setup module with simple hello_tinytorch() function
- Keep only the ASCII art file (tinytorch_flame.txt) for visual appeal
- Simplify tests to just verify function runs and file exists
- Update README to reflect simplified purpose and usage
- Remove complex developer profiles and system info classes
- Focus on minimal introduction to TinyTorch workflow
2025-07-10 19:22:18 -04:00
Vijay Janapa Reddi
04d6744138 Add notebook compatibility and execute setup_dev.ipynb
🔧 Notebook Compatibility:
- Fix __file__ NameError in notebook environment
- Add try/except for file path detection
- Handle both script and notebook execution contexts
- Use os.getcwd() fallback when __file__ not available

📓 Notebook Execution:
- Execute setup_dev.ipynb with all outputs generated
- Beautiful ASCII art displays properly in notebook
- All test cells show expected results
- Student-friendly interactive experience

🎨 ASCII Art Display:
- Stunning flame ASCII art renders perfectly in notebook
- Full profile display with Tiny🔥Torch branding
- Interactive testing cells with clear outputs
- Students can see the ASCII art immediately

🧪 Testing:
- All 17 tests still pass after notebook conversion
- File loading works in both environments
- Comprehensive coverage maintained
- Ready for student use

Students can now run the setup_dev.ipynb notebook and immediately see the beautiful ASCII art output, making their first TinyTorch experience memorable and engaging
2025-07-10 19:19:22 -04:00
Vijay Janapa Reddi
250cc9f0fa Add file-based ASCII art system with stunning flame design
🎨 File-Based ASCII Art System:
- Add beautiful tinytorch_flame.txt with sophisticated flame design
- Dynamic file loading with fallback to simple flame
- Easy customization - students can edit the file directly
- Proper error handling for missing files

🔥 Enhanced Visual Experience:
- Stunning detailed flame ASCII art from file
- 'Tiny🔥Torch' branding with 'Build ML Systems from Scratch!' tagline
- Much more sophisticated design than hardcoded version
- Students can easily customize by editing tinytorch_flame.txt

📚 Educational Benefits:
- Two customization options: parameter override or file editing
- Teaches file I/O and error handling concepts
- Encourages creative expression and ownership
- Professional development practices

🧪 Testing:
- Updated all tests to work with file-based system
- All 17 tests pass successfully
- Comprehensive coverage of file loading and fallback
- Verified both custom and default ASCII art functionality

Students can now easily create their own ASCII art by editing the tinytorch_flame.txt file or providing custom art via parameters
2025-07-10 19:14:49 -04:00
Vijay Janapa Reddi
b9c2c6de6d Add ASCII art and enhance developer personalization
🎨 ASCII Art Features:
- Add beautiful TinyTorch flame ASCII art as default
- Support custom ASCII art for student personalization
- New get_ascii_art() and get_full_profile() methods
- Enhanced visual appeal and student engagement

👨‍💻 Profile Updates:
- Update instructor info: vj@eecs.harvard.edu, @profvjreddi
- Add comprehensive ASCII art examples and ideas
- Encourage creative student customization
- Professional signature generation with visual flair

🧪 Testing:
- Add 2 new ASCII art tests (17 total tests pass)
- Test default flame art and custom art functionality
- Verify full profile display with proper formatting
- Comprehensive coverage of all new features

Students can now create truly personalized TinyTorch experiences with custom ASCII art, making their learning journey unique and memorable
2025-07-10 19:11:41 -04:00
Vijay Janapa Reddi
1d27b3a8e2 Add developer personalization to setup module
- Add DeveloperProfile class with customizable developer information
- Default to course instructor (Vijay Janapa Reddi) but allow student customization
- Include professional signature generation for code attribution
- Add comprehensive test coverage (6 new tests, 15 total tests pass)
- Encourage student ownership and personalization of their TinyTorch journey
- Maintain educational structure with TODO sections and hidden solutions
2025-07-10 19:00:16 -04:00
Vijay Janapa Reddi
99f4bb76aa Fix setup module and add comprehensive tests
- Fix syntax errors in setup_dev.py test cells (proper indentation)
- Add comprehensive test suite for setup module (test_setup.py)
- Test coverage: functions, SystemInfo class, integration tests
- Custom test runner (no pytest dependency required)
- All 9 tests pass successfully
- Update .gitignore to allow modules/ directory for educational structure
2025-07-10 18:52:14 -04:00
Vijay Janapa Reddi
e86d0223d1 Update test discovery and documentation for new module structure
- Fix CLI tool to look for tests in modules/{module}/tests/ instead of tests/
- Update test imports to use parent directory module imports
- Update Cursor rules to reflect new test structure:
  * Project structure shows tests/ subdirectory
  * Testing patterns show correct paths and import patterns
  * Development workflow shows updated test locations
- Test imports now work: from tensor_dev import Tensor
- CLI commands now find tests in correct locations

Tests are now properly organized and discoverable
2025-07-10 18:45:09 -04:00
Vijay Janapa Reddi
ee04857215 Reorganize modules with clean structure and tests/ subdirectory
- Move test_tensor.py to modules/tensor/tests/test_tensor.py
- Create tests/ directories in setup and tensor modules
- Clean up setup module: remove setup_dev.html, setup_dev_files/, __init__.py
- Establish clean module structure pattern:
  * {module}_dev.py - Main development file
  * {module}_dev.ipynb - Generated notebook
  * README.md - Module documentation
  * tests/ - Test directory with test_{module}.py

This makes it crystal clear to students where tests are located.
2025-07-10 18:40:50 -04:00
Vijay Janapa Reddi
22f44c62a8 Clean up tensor module to follow NBDev educational pattern
- Remove experimental files (tensor_nbdev_educational.*, tensor_dev_standard.*, tensor_dev_student.ipynb)
- Create clean tensor_dev.py source file following setup module pattern
- Keep only essential files: tensor_dev.py, test_tensor.py, README.md
- Ready for NBDev workflow: Python source -> notebook -> package export
2025-07-10 18:20:26 -04:00