Fix pedagogical issue: Don't show code examples before asking students to write code

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.
This commit is contained in:
Claude 2025-11-09 15:09:50 +00:00
parent 10d0ec27a2
commit e4ab13ae78
No known key found for this signature in database
2 changed files with 26 additions and 45 deletions

View file

@ -694,6 +694,7 @@ feedback_tokens_for_ai: |
| **Generic feedback** | "Good job!" isn't helpful | Reference specific parts of their answer |
| **Dead-end paths** | User stuck, can't progress | Always provide a way forward (even if it's restarting) |
| **Ignoring the rubric** | Global `tokens_for_ai_rubric` tells AI how to evaluate | Define it for consistency across steps |
| **Showing answers before questions** | Users copy-paste instead of learning | Explain CONCEPTS in content_blocks, provide CODE EXAMPLES only in ai_feedback |
### Activity Development Workflow

View file

@ -174,30 +174,20 @@ sections:
- ''
- 'This is why understanding stdout matters - it''s not just "printing to the screen," it''s sending data to a stream that can go anywhere!'
- ''
- '### How Different Languages Display Output'
- 'Every programming language has its own syntax, but they all accomplish the same goal. Here are examples across different languages:'
- '### How Languages Display Output'
- ''
- '**Python:** Uses `print()` function'
- '```python'
- 'print("Hello, World!")'
- '```'
- 'Every programming language has its own syntax for displaying output to stdout:'
- '- Some use a `print()` function'
- '- Some use `console.log()`'
- '- Some use methods like `System.out.println()`'
- '- Some use stream operators like `<<`'
- ''
- '**JavaScript:** Uses `console.log()` function'
- '```javascript'
- 'console.log("Hello, World!");'
- '```'
- 'Despite different syntax, they all accomplish the same goal: sending text to stdout.'
- ''
- '**Java:** Uses `System.out.println()` method'
- '```java'
- 'System.out.println("Hello, World!");'
- '```'
- '**Important Concept:**'
- 'Text in quotes (like `"Hello, World!"`) is called a **string** - it represents text data that you want to display.'
- ''
- '**C++:** Uses `std::cout` stream'
- '```cpp'
- 'std::cout << "Hello, World!" << std::endl;'
- '```'
- ''
- '**Key Concept:** Notice that while the syntax differs, each language has a way to send text to stdout. The quotes around "Hello, World!" indicate it''s a **string** (text data).'
- 'Now you''ll figure out how YOUR chosen language does it!'
- ''
- '### Now It''s Your Turn!'
question: How do you display 'Hello, World!' to stdout in your chosen language? Write the complete code.
@ -464,36 +454,26 @@ sections:
- '**Good names:** `user_name`, `total_score`, `isActive`, `playerHealth`'
- '**Bad names:** `x`, `temp`, `asdf`, `thing1`'
- ''
- '### How to Create Variables in Different Languages'
- '### How Languages Handle Variables'
- ''
- '**Python (dynamically typed):**'
- '```python'
- 'name = "Alice" # Create variable and assign value'
- 'print(name) # Display the variable''s value'
- '```'
- 'Every programming language has its own syntax for creating variables, but they all follow the same basic pattern:'
- '1. Give the variable a name'
- '2. Use an assignment operator (usually `=`)'
- '3. Provide a value'
- ''
- '**JavaScript (dynamically typed):**'
- '```javascript'
- 'let name = "Alice"; // Declare with let'
- 'console.log(name); // Display'
- '```'
- '**Important Language Difference:**'
- ''
- '**Java (statically typed):**'
- '```java'
- 'String name = "Alice"; // Must specify type'
- 'System.out.println(name); // Display'
- '```'
- '**Dynamically typed languages** (like Python, JavaScript, Ruby):'
- '- You just name the variable and assign a value'
- '- The language automatically figures out the type'
- '- Simpler syntax, more flexible'
- ''
- '**C++ (statically typed):**'
- '```cpp'
- 'std::string name = "Alice"; // Must specify type'
- 'std::cout << name << std::endl; // Display'
- '```'
- '**Statically typed languages** (like Java, C++, C#, Go):'
- '- You must specify the data type when creating a variable'
- '- Example: declare that `name` will store a String'
- '- More verbose, but catches type errors early'
- ''
- '### Key Differences'
- '**Dynamically typed languages** (Python, JavaScript, Ruby): You don''t declare the type. The language figures it out automatically.'
- ''
- '**Statically typed languages** (Java, C++, C#, Go): You must specify the type (String, int, etc.) when creating a variable.'
- 'You''ll use YOUR language''s specific syntax to create variables!'
- ''
- '### The Assignment Operator'
- 'The `=` sign is the **assignment operator**. It means "assign the value on the right to the variable on the left."'