PROBLEM: activity37 was showing complete code examples in Python, JavaScript,
Java, and C++ BEFORE asking students to write code themselves. This turns
learning into copy-paste practice.
FIXED:
- Hello World section: Removed multi-language code examples from content_blocks
- Variables section: Removed multi-language code examples from content_blocks
- Now explains CONCEPTS (what, why, how languages differ) without showing syntax
- Code examples remain in AI feedback for when students struggle or ask for help
PEDAGOGICAL APPROACH:
1. Explain the concept (stdout, variables, etc.)
2. Explain language differences conceptually (dynamic vs static typing)
3. Ask students to TRY writing code in THEIR language
4. Provide language-specific examples in AI FEEDBACK if they struggle
This way students actually have to THINK and LEARN, not just copy.
UPDATED CLAUDE.md:
- Added new pitfall: "Showing answers before questions"
- Guidance: Explain concepts in content_blocks, provide code examples in ai_feedback
Still validates perfectly with zero errors/warnings.
- Increased from 1,148 to 1,895 lines (+65%)
- Added detailed explanations before each coding exercise
- Enhanced Hello World section with stdout concepts and multi-language examples
- Expanded Variables section with box analogy, naming rules, and typing differences
- Enhanced Data Types with comprehensive type explanations and string formatting
- Expanded If Statements with conditional logic fundamentals and comparison operators
- Enhanced Loops with detailed for loop explanations, execution traces, and common patterns
- Expanded Functions with DRY principle, parameter explanations, and best practices
- Enhanced Return Values with display vs return differences and common mistakes
- All sections now teach fundamentals thoroughly before asking students to code
- Validation passed successfully
This commit addresses two critical issues:
1. Completion Bug (activities 30-37):
- Final steps were looping forever, preventing activity completion
- Fixed by removing next_section_and_step from completion transitions
- Kept off_topic transition looping to avoid validator terminal step errors
- Activities now complete properly when users give valid final answers
2. Activity37 Bucket Logic:
- Changed "close" bucket to retry same step instead of advancing
- Only "correct" bucket now advances to next step
- All other buckets (close, incomplete, wrong_language, etc.) retry
- This ensures students must get correct answers to progress
Technical Details:
- Final steps are not considered "terminal" if at least one transition
has next_section_and_step (validator requirement)
- Off-topic transitions loop back to allow another attempt
- Completion happens when get_next_step() returns None, None
Validation:
- All 8 activities pass activity_yaml_validator.py
- No errors or warnings
Affects: activity30-37 (all new merged activities)
Respects existing stable configuration where:
- MODEL_0 = Hermes (default for classification and feedback)
- MODEL_1 = Qwen (for code generation)
- MODEL_2 = GPT
Updated:
- All function defaults in activity.py: MODEL_1 -> MODEL_0
- activity37: Uses MODEL_0 for classification, MODEL_1 for code feedback
This works with the existing environment variable setup without requiring changes to vars.sh.
Added detailed comments showing how to use the recommended model:
- hf.co/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:Q4_K_M
- Setup instructions for llama.cpp (with GPU offloading)
- Alternative setup with ollama
- Environment variable configuration examples
This 30B parameter model is specifically optimized for code generation
across all programming languages, making it perfect for the universal
programming activity.
Allow activities to specify separate models for classification and feedback:
- classifier_model: Used for categorizing user responses into buckets
- feedback_model: Used for generating AI feedback and translations
Both fields can be set at activity level (defaults) and overridden at step level.
Updated activity37 to use:
- MODEL_1 (Hermes) for classification
- MODEL_3 (Qwen 3 Coder) for feedback
This allows using specialized models for different tasks, e.g., fast classification
with accurate feedback generation from domain-specific models.
Created 3 comprehensive educational activities without embedded Python:
1. activity35-american-history.yaml - Advanced American History for gifted students
- Founding principles and Constitutional design
- Civil War causes and Reconstruction failure
- Civil Rights Movement strategies
- Primary source analysis and critical historical thinking
- Connects past to present issues
2. activity36-biblical-history.yaml - Biblical History & Ancient Near East
- Ancient Near Eastern context (Mesopotamia, Egypt, Canaan)
- Archaeological evidence and historical reconstruction
- Israelite history (Exodus, Monarchy, Exile)
- Roman period and early Christianity
- Foundation myths vs historical facts
- Cultural adaptation and religious transformation
3. activity37-programming-languages.yaml - Universal Programming Concepts
- Student chooses ANY programming language (Python, C++, COBOL, anything)
- AI adapts all examples/feedback to chosen language via metadata
- Covers: stdout/output, variables, data types, control flow, loops, functions
- All examples use stdout to display messages
- Concepts applicable to every language
- Language-specific syntax provided by AI
All activities:
- Use only YAML features (no embedded Python)
- Validate successfully with 0 errors
- Provide sophisticated educational content
- Use AI feedback for personalization
- Include critical thinking and reflection
- Track progress via metadata
Total: 8 new educational activities across 2 commits (5 from previous commit + 3 now)