- Implement tito benchmark baseline and capstone commands
- Add SPEC-style normalization for baseline benchmarks
- Implement tito community join, update, leave, stats, profile commands
- Use project-local storage (.tinytorch/) for user data
- Add privacy-by-design with explicit consent prompts
- Update site documentation for community and benchmark features
- Add Marimo integration for online notebooks
- Clean up redundant milestone setup exploration docs
- Finalize baseline design: fast setup validation (~1 second) with normalized results
- Include source and release versions of 01_setup assignment
- Demonstrates working NBGrader workflow with real module
- Shows what instructors will get when running tito nbgrader generate/release
- Provides template for how assignments are structured
These are example outputs from testing NBGrader integration.
- Remove unnecessary module_paths.txt file for cleaner architecture
- Update export command to discover modules dynamically from modules/source/
- Simplify nbdev command to support --all and module-specific exports
- Use single source of truth: nbdev settings.ini for module paths
- Clean up import structure in setup module for proper nbdev export
- Maintain clean separation between module discovery and export logic
This implements a proper software engineering approach with:
- Single source of truth (settings.ini)
- Dynamic discovery (no hardcoded paths)
- Clean CLI interface (tito package nbdev --export [--all|module])
- Robust error handling with helpful feedback
- Added metadata to setup-imports cell: grade=false, solution=false, task=false
- All cells now have proper NBGrader metadata following tensor module pattern
- Maintains consistent metadata structure across all cells
- Ensures proper NBGrader processing and student version generation
- Follows professional NBGrader best practices for educational content
- Improved educational structure with clear step-by-step progression
- Added comprehensive concept explanations and learning goals
- Enhanced comments outside solution blocks with detailed guidance
- Used proper NBGrader syntax patterns from tensor module
- Added type hints and better function documentation
- Included detailed STEP-BY-STEP instructions and HINTS
- Split tests into separate graded cells (25 pts each)
- Added module summary with key concepts and next steps
- Maintained Python-first development workflow
- Creates professional-grade educational content
- Split into personal_info() and system_info() functions (50 pts each)
- personal_info(): Student's personal configuration (name, email, institution, etc.)
- system_info(): System queries using sys, platform, psutil modules
- Teaches students to query real system information (Python version, platform, CPU, memory)
- Comprehensive comments outside SOLUTION blocks guide implementation
- Proper NBGrader syntax with solution blocks and hidden tests
- Both functions become part of tinytorch package after export
- Creates useful personalized TinyTorch installation with system diagnostics
- Reduced from 4 problems to 1 simple function
- Function returns personalized TinyTorch configuration dictionary
- Teaches NBGrader workflow with solution blocks and hidden tests
- Creates something useful - personalized tinytorch.system_info() function
- Perfect for learning the implement → test → export workflow
- Single function worth 100 points with comprehensive testing
- Maintains instructor mark scheme for grading guidance
- Simplified to 4 core problems: student profile, email validation, environment check, configuration test
- Changed from complex programming tasks to simple configuration validation
- Used proper NBGrader syntax with ### BEGIN SOLUTION ### and ### BEGIN HIDDEN TESTS ###
- Added instructor mark schemes with point allocation and deduction guidelines
- Focused on TinyTorch-relevant setup tasks: configuring student info and validating environment
- Reduced from 95 to 100 points with better balanced distribution (40+20+20+20)
- Uses instructor's actual information as example template
- Maintains comprehensive educational content while being much more focused
- Convert from complex nbgrader metadata to simple 'nbgrader: grade, solution' format
- Add inline test blocks with 'nbgrader: tests' directives
- Remove separate test files - use inline tests instead
- Follow the jupytext percent format with NBGrader directives
- Maintain comprehensive educational content and hints
- Clean up generated notebooks (Python-first development)
- Ready for NBGrader autograding workflow
- Remove setup_dev.ipynb (development artifact)
- Remove 00_setup.ipynb (generated student assignment)
- Follow Python-first development workflow: .py files are source of truth
- .ipynb files should only be generated when ready for NBGrader work
- Clean separation: develop in .py, generate .ipynb on demand
- Add complex_calculation() function demonstrating multiple solution blocks within single function
- Shows how NBGrader can guide students through step-by-step implementation
- Each solution block replaced with '# YOUR CODE HERE' + 'raise NotImplementedError()' in student version
- Update total points from 85 to 95 to account for new 10-point problem
- Add comprehensive test coverage for multi-step function
- Demonstrate educational pattern: Step 1 → Step 2 → Step 3 within one function
- Perfect example of NBGrader's guided learning capabilities
- Remove 5 outdated development guides that contradicted clean NBGrader/nbdev architecture
- Update all documentation to reflect assignments/ directory structure
- Remove references to deprecated #| hide approach and old command patterns
- Ensure clean separation: NBGrader for assignments, nbdev for package export
- Update README, Student Guide, and Instructor Guide with current workflows
- Migrated all Python source files to assignments/source/ structure
- Updated nbdev configuration to use assignments/source as nbs_path
- Updated all tito commands (nbgrader, export, test) to use new structure
- Fixed hardcoded paths in Python files and documentation
- Updated config.py to use assignments/source instead of modules
- Fixed test command to use correct file naming (short names vs full module names)
- Regenerated all notebook files with clean metadata
- Verified complete workflow: Python source → NBGrader → nbdev export → testing
All systems now working: NBGrader (14 source assignments, 1 released), nbdev export (7 generated files), and pytest integration.
The modules/ directory has been retired and replaced with standard NBGrader structure.
✅ PYTHON-FIRST DEVELOPMENT:
- Always work in raw Python files (modules/XX/XX_dev.py)
- Generate Jupyter notebooks on demand using Jupytext
- NBGrader compliance through automated cell metadata
- nbdev for package building and exports
🔧 WORKFLOW IMPROVEMENTS:
- Fixed file priority: use XX_dev.py over XX_dev_enhanced.py
- Clean up enhanced files to use standard files as source of truth
- Updated documentation to highlight Python-first approach
📚 COMPLETE INSTRUCTOR WORKFLOW:
1. Edit modules/XX/XX_dev.py (Python source of truth)
2. Export to package: tito module export XX (nbdev)
3. Generate assignment: tito nbgrader generate XX (Python→Jupyter→NBGrader)
4. Release to students: tito nbgrader release XX
5. Auto-grade with pytest: tito nbgrader autograde XX
✅ VERIFIED WORKING:
- Python file editing ✅
- nbdev export to tinytorch package ✅
- Jupytext conversion to notebooks ✅
- NBGrader assignment generation ✅
- pytest integration for auto-grading ✅🎯 TOOLS INTEGRATION:
- Raw Python development (version control friendly)
- Jupytext (Python ↔ Jupyter conversion)
- nbdev (package building and exports)
- NBGrader (student assignments and auto-grading)
- pytest (testing within notebooks)
Perfect implementation of user's ideal workflow
- Move development artifacts to development/archived/ directory
- Remove NBGrader artifacts (assignments/, testing/, gradebook.db, logs)
- Update root README.md to match actual repository structure
- Provide clear navigation paths for instructors and students
- Remove outdated documentation references
- Clean root directory while preserving essential files
- Maintain all functionality while improving organization
Repository is now optimally structured for classroom use with clear entry points:
- Instructors: docs/INSTRUCTOR_GUIDE.md
- Students: docs/STUDENT_GUIDE.md
- Developers: docs/development/
✅ All functionality verified working after restructuring