Create high-quality, progressive learning tutorials for VRP Toolkit...
Create comprehensive, learner-centered tutorials for the VRP Toolkit project.
Tutorials are progressive learning experiences, not documentation dumps. They should:
Examples: "How to use OSMnx integration", "How to visualize routes"
Examples: "Custom problems explained", "Algorithm configuration"
Examples: "Build a custom heuristic", "Create CVRP variant"
Examples: "Real maps + custom algorithms", "Benchmarking workflow"
Use this structure for all tutorials:
# Tutorial XX: [Clear, Action-Oriented Title]
[2-3 sentence overview of what student will learn]
**What you'll learn:**
- Concrete skill 1
- Concrete skill 2
- Concrete skill 3
**Prerequisites:**
- Tutorial YY (if applicable)
- Basic Python knowledge
**Time:** ~XX minutes
## 1. Setup and Imports
[Minimal imports needed - copy-pasteable]
```python
# Standard imports
import numpy as np
import pandas as pd
# VRP Toolkit imports
from vrp_toolkit.xxx import yyy
[Quick validation - ensure imports work]
### Section 3: Quick Win (10 minutes)
```markdown
## 2. Quick Start: [Simplest Possible Example]
Let's start with the **simplest possible example** to see it working:
[Code that runs in <10 lines and produces visible output]
**What just happened:**
[Brief explanation of what the code did]
Critical: Student should get a working result in first 10 minutes.
## 3. Understanding [Key Concept]
Now let's understand what's really happening.
### 3.1 [Sub-concept 1]
[Explanation]
[Code example]
### 3.2 [Sub-concept 2]
[Explanation]
[Code example]
### 3.3 [Sub-concept 3]
[Explanation]
[Code example]
Progressive disclosure: Introduce complexity one piece at a time.
## 4. Advanced Features
Now that you understand the basics, let's explore advanced options:
### 4.1 [Advanced Feature 1]
**When to use:** [Specific scenario]
**How it works:** [Brief explanation]
```python
[Code example]
[Similar structure]
### Section 6: Real-World Example (10-15 minutes)
```markdown
## 5. Real-World Example: [Concrete Scenario]
Let's apply everything to a realistic scenario:
**Scenario:** [Describe a real problem]
[Complete, runnable example that combines concepts]
**Key observations:**
- Point 1
- Point 2
## 6. Comparison and Best Practices
**When to use [this approach]:**
- Scenario 1
- Scenario 2
**When to use [alternative]:**
- Scenario 3
- Scenario 4
**Common pitfalls:**
- Pitfall 1 and how to avoid it
- Pitfall 2 and how to avoid it
## 7. Practice Exercises
Try these on your own:
1. **Basic:** [Simple modification task]
2. **Intermediate:** [Combine concepts]
3. **Advanced:** [Open-ended challenge]
[Hints or solution sketches]
## 8. Summary
**What you learned:**
- ā
Skill 1
- ā
Skill 2
- ā
Skill 3
**Key takeaways:**
1. Important insight 1
2. Important insight 2
**Next steps:**
- Try Tutorial XX for [related topic]
- Explore [related feature]
- Build your own [project idea]
# Step 1: [What this does]
code_line_1
# Step 2: [What this does]
code_line_2
# Verify result
print(f"Result: {result}") # Show output
ā Start with working code, explain after ā Use consistent variable names across examples ā Show output for every code block ā Explain errors students might encounter ā Compare alternatives ("X vs Y") ā Include visual output (plots, tables) ā Build on previous tutorials
ā Start with theory before showing code ā Assume prior knowledge (state prerequisites) ā Use complex examples too early ā Skip error handling in advanced sections ā Leave code unexplained ā Use pseudo-code instead of real code
XX_topic_name.ipynb
Where:
- XX = Tutorial number (01, 02, 03, ...)
- topic_name = snake_case description
Examples:
03_custom_problems.ipynb04_problem_variants.ipynb06_custom_algorithms.ipynbAsk yourself:
# Create new Jupyter notebook
touch tutorials/XX_topic_name.ipynb
Use the structure template above, adapting as needed for the topic.
Before finalizing, verify:
A good tutorial:
See references/example-tutorial-outline.md for a complete example of applying this template.
When user requests a tutorial:
When updating existing tutorials: