5.2 KiB
5.2 KiB
Algorithm Learning Rules & Capabilities
Learning Approach Rules
1. Progressive Learning Classes
Learning is organized into 4 main phases, each with specific algorithm classes:
Phase 1: Foundations (Weeks 1-4)
- Array basics and linear operations
- Two pointers technique
- Binary search variations
- Simple string manipulation
Phase 2: Intermediate Patterns (Weeks 5-8)
- Hash tables and dictionaries
- String algorithms and patterns
- Array validation and constraints
- Mathematical sequences
Phase 3: Advanced Patterns (Weeks 9-12)
- Dynamic programming basics
- Recursion and backtracking
- Advanced data structures
- Pattern recognition
Phase 4: Advanced Topics (Weeks 13-16)
- Graph algorithms
- Tree algorithms
- Complex problem solving
- Optimization techniques
2. Daily Practice Protocol
- Duration: 30-60 minutes daily
- Format: LeetCode-style problems
- Progression: Start with easy, move to medium, then hard
- Documentation: Log every session in
docs/daily-practice.md
3. Mathematical Terms Explanation Rule
- Any mathematical term must be explained with concrete examples
- Avoid abstract explanations without context
- Use visual analogies when possible
- Relate to programming concepts immediately
4. Gradual Documentation Creation
- Create docs only as you reach each phase
- Document what you've learned, not what you will learn
- Include personal insights and "aha!" moments
- Track what was difficult and why
5. Progress Tracking Rules
- Update
docs/progress.mdat the end of each week - Rate skills 1-5 stars based on confidence
- Identify weak areas and create improvement plans
- Celebrate milestones and improvements
Specific Capabilities for This Repository
1. Algorithm Analysis
- Analyze existing algorithms in
lib/directory - Compare different approaches (e.g., twoSum vs twoSumHashTable)
- Explain time/space complexity with concrete examples
- Suggest improvements and optimizations
2. Problem Classification
- Classify new problems into learning phases
- Map problems to specific algorithmic patterns
- Determine appropriate difficulty level
- Suggest similar problems for practice
3. External Problem Integration
- Find LeetCode-style problems matching current learning phase
- Filter problems by difficulty and relevance
- Provide direct links to practice problems
- Track external problem completion
4. Code Review & Feedback
- Review your implementations in
lib/ - Suggest more efficient approaches
- Identify common pitfalls
- Provide explanations for suggested changes
5. Visual Learning Support
- Create visual explanations of algorithms
- Use ASCII art for data structure visualization
- Show step-by-step execution traces
- Demonstrate before/after comparisons
6. Real-world Connections
- Connect algorithms to real programming scenarios
- Explain where each pattern is commonly used
- Show industry relevance and applications
- Relate to system design and performance
Learning Philosophy
1. No Rush, Deep Understanding
- Take time to fully understand each concept
- Don't move to next topic until current one is mastered
- Focus on intuition, not just memorization
- Practice variations of the same pattern
2. Learn by Doing
- Implement algorithms from scratch
- Test with edge cases
- Debug and fix errors
- Refactor for clarity and efficiency
3. Pattern Recognition
- Identify common patterns across problems
- Recognize when to apply specific techniques
- Build mental toolkit of approaches
- Develop intuition for problem-solving
4. Incremental Growth
- Start with simple problems and build complexity gradually
- Each week builds on previous knowledge
- Review and reinforce past concepts
- Create connections between different areas
Communication Guidelines
1. Concrete Explanations
- Always provide concrete examples
- Use code snippets to illustrate concepts
- Show step-by-step execution
- Relate to existing algorithms in the repository
2. Progressive Disclosure
- Reveal information gradually
- Don't overwhelm with all details at once
- Focus on current learning objectives
- Build complexity step by step
3. Interactive Learning
- Ask questions to check understanding
- Encourage experimentation
- Provide hints before full solutions
- Celebrate small wins
4. Adaptive Support
- Adjust pace based on understanding
- Spend more time on difficult concepts
- Skip ahead when mastery is shown
- Review when needed
Success Metrics
1. Understanding Metrics
- Can explain concepts in own words
- Can implement algorithms from scratch
- Can recognize patterns in new problems
- Can optimize solutions effectively
2. Problem-Solving Metrics
- Can classify problems correctly
- Choose appropriate algorithms
- Handle edge cases properly
- Debug and fix errors independently
3. Learning Progress Metrics
- Consistent daily practice
- Increasing problem difficulty
- Improving solution efficiency
- Growing pattern recognition skills
Note: This document will evolve as we progress through the learning journey. New rules and capabilities will be added based on emerging needs and learning patterns.