# ๐Ÿ”ฅ Module: Setup ## ๐Ÿ“Š Module Info - **Difficulty**: โญ Beginner - **Time Estimate**: 1-2 hours - **Prerequisites**: Basic Python knowledge - **Next Steps**: Tensor module Welcome to TinyTorch! This foundational module introduces the complete development workflow that powers every subsequent module. You'll master the nbdev notebook-to-Python workflow, implement your first TinyTorch components, and establish the coding patterns used throughout the entire course. ## ๐ŸŽฏ Learning Objectives By the end of this module, you will be able to: - **Master the nbdev workflow**: Write code with `#| export` directives and understand the notebook-to-package pipeline - **Implement system utilities**: Build functions for system information collection and developer profiles - **Use TinyTorch CLI tools**: Run tests, sync modules, and check development progress - **Write production-ready code**: Follow professional patterns for error handling, testing, and documentation - **Establish development rhythm**: Understand the build โ†’ test โ†’ iterate cycle that drives all TinyTorch modules ## ๐Ÿง  Build โ†’ Use โ†’ Reflect This module follows TinyTorch's **Build โ†’ Use โ†’ Reflect** framework: 1. **Build**: Implement core utilities (hello functions, system info, developer profiles) 2. **Use**: Apply these components in real development workflows and testing scenarios 3. **Master**: Understand how this foundation supports all advanced TinyTorch modules and establish professional development habits ## ๐Ÿ“š What You'll Build ### Core Functions ```python # Welcome and basic operations hello_tinytorch() # ASCII art and course introduction add_numbers(2, 3) # Foundation arithmetic operations # System information utilities info = SystemInfo() print(f"Platform: {info.platform}") print(f"Compatible: {info.is_compatible()}") # Developer profile management profile = DeveloperProfile(name="Your Name", affiliation="University") print(profile.get_full_profile()) ``` ### System Information Class - **Platform detection**: Python version, operating system, machine architecture - **Compatibility checking**: Verify minimum requirements for TinyTorch development - **Environment validation**: Ensure proper setup for course progression ### Developer Profile Class - **Personalized signatures**: Professional code attribution and contact information - **ASCII art integration**: Custom flame art loading with graceful fallbacks - **Educational customization**: Personalize your TinyTorch learning experience ## ๐Ÿš€ Getting Started ### Prerequisites Ensure you have completed the TinyTorch installation and environment setup: ```bash # Activate TinyTorch environment source bin/activate-tinytorch.sh # Verify installation tito doctor ``` ### Development Workflow 1. **Open the development notebook**: `modules/source/01_setup/setup_dev.py` 2. **Follow the guided implementation**: Complete TODO sections with provided scaffolding 3. **Export your code**: `tito export --module setup` 4. **Test your implementation**: `tito test --module setup` 5. **Verify integration**: `tito nbdev build` to ensure package compatibility ## ๐Ÿงช Testing Your Implementation ### Comprehensive Test Suite Run the full test suite to verify your implementation: ```bash # TinyTorch CLI (recommended) tito test --module setup # Direct pytest execution python -m pytest tests/ -k setup -v ``` ### Test Coverage (20 Tests) - โœ… **Function execution**: All functions run without errors - โœ… **Output validation**: Correct content and formatting - โœ… **Arithmetic operations**: Basic, negative, and floating-point math - โœ… **System information**: Platform detection and compatibility - โœ… **Developer profiles**: Default and custom configurations - โœ… **ASCII art handling**: File loading and fallback behavior - โœ… **Error recovery**: Graceful handling of missing files - โœ… **Integration testing**: All components work together ### Inline Testing The module includes educational inline tests that run during development: ```python # Example inline test output ๐Ÿ”ฌ Unit Test: SystemInfo functionality... โœ… System detection works โœ… Compatibility checking works ๐Ÿ“ˆ Progress: SystemInfo โœ“ ``` ## ๐ŸŽฏ Key Concepts ### Real-World Applications - **Development Environment Management**: Like PyTorch's system compatibility checking - **Professional Code Attribution**: Similar to open-source project contributor systems - **Educational Scaffolding**: Mirrors industry onboarding and training workflows - **System Validation**: Foundation for deployment compatibility (used in modules 12-14) ### Core Programming Patterns - **NBDev Integration**: Write once in notebooks, deploy everywhere as Python packages - **Export Directives**: Strategic use of `#| export` for clean package structure - **Error Handling**: Graceful fallbacks for missing resources and system incompatibilities - **Object-Oriented Design**: Classes with clear responsibilities and professional interfaces - **Testing Philosophy**: Comprehensive coverage with both unit and integration approaches ### TinyTorch Foundation This module establishes patterns used throughout the course: - **Module โ†’ Package Mapping**: `setup_dev.py` โ†’ `tinytorch.core.setup` - **Development Workflow**: Edit โ†’ Export โ†’ Test โ†’ Iterate cycle - **Educational Structure**: Guided implementation with instructor solutions - **Professional Standards**: Production-ready code with full test coverage ## ๐ŸŽ‰ Ready to Build? You're about to establish the foundation that will power your entire TinyTorch journey! This module teaches the development workflow mastery that professional ML engineers use daily. Every advanced concept you'll learn - from tensors to optimizers to MLOps - builds on the solid patterns you're about to implement here. Take your time, test thoroughly, and enjoy building something that really works! ```{grid} 3 :gutter: 3 :margin: 2 {grid-item-card} ๐Ÿš€ Launch Builder :link: https://mybinder.org/v2/gh/VJProductions/TinyTorch/main?filepath=modules/source/01_setup/setup_dev.py :class-title: text-center :class-body: text-center Interactive development environment {grid-item-card} ๐Ÿ““ Open in Colab :link: https://colab.research.google.com/github/VJProductions/TinyTorch/blob/main/modules/source/01_setup/setup_dev.ipynb :class-title: text-center :class-body: text-center Google Colab notebook {grid-item-card} ๐Ÿ‘€ View Source :link: https://github.com/VJProductions/TinyTorch/blob/main/modules/source/01_setup/setup_dev.py :class-title: text-center :class-body: text-center Browse the code on GitHub ```