opencompletion.com/research/activity30-logic-puzzles.yaml
Claude 994d5e5de9
Add 5 new educational activities without embedded Python
Created 5 comprehensive educational activities that use only YAML features
(buckets, transitions, metadata operations, AI feedback) without Python scripts:

- activity30-logic-puzzles.yaml: Critical thinking through deductive reasoning,
  contrapositives, syllogisms, and knights/knaves puzzles

- activity31-scientific-method.yaml: Learn scientific method through historical
  case studies (Semmelweis, Newton) and experimental design principles

- activity32-world-geography.yaml: Choose-your-own-adventure journey exploring
  continents, countries, capitals, and cultural facts

- activity33-environmental-science.yaml: Role-playing as environmental consultant
  making sustainability decisions on transportation, energy, land use, waste, and food

- activity34-media-literacy.yaml: Develop critical media consumption skills,
  evaluate sources, recognize bias, fact-check claims, and spot manipulation

All activities:
- Follow existing YAML schema and validate successfully
- Use Socratic buckets for educational feedback
- Include set_language support
- Track progress via metadata
- Provide AI-generated personalized feedback
- Are educational, engaging, and progressively challenging
- Include final reflection steps

Also added NEW_ACTIVITIES_PLAN.md documenting the planning process and
design rationale for each activity.
2025-11-08 17:34:33 +00:00

539 lines
24 KiB
YAML

default_max_attempts_per_step: 3
tokens_for_ai_rubric: |
Evaluate the student's performance throughout the logic puzzle activity.
Consider:
- Their ability to reason through logical statements
- Understanding of deductive reasoning
- Improvement over the course of the activity
- Engagement with explanations
Provide encouraging feedback and suggest areas for continued practice.
sections:
- section_id: "introduction"
title: "Welcome to Logic Puzzles"
steps:
- step_id: "welcome"
title: "Welcome to Logic Puzzles"
content_blocks:
- "# Welcome to Critical Thinking & Logic Puzzles!"
- "In this activity, you'll develop your logical reasoning skills through a series of engaging puzzles."
- "You'll learn to identify logical patterns, make deductions, and think critically."
- "**What you'll learn:**"
- "- How to analyze logical statements"
- "- Deductive reasoning techniques"
- "- Pattern recognition"
- "- How to avoid common logical fallacies"
- ""
- "Let's begin your journey into the world of logic!"
question: "Are you ready to sharpen your logical thinking skills?"
tokens_for_ai: |
The student is expressing readiness to begin. Accept any positive, affirming response.
Categorize as:
- ready: Student is ready to proceed
- set_language: Student is setting language preference
- off_topic: Completely unrelated response
buckets:
- ready
- set_language
- off_topic
transitions:
ready:
content_blocks:
- "Excellent! Let's start with the fundamentals of logical reasoning."
next_section_and_step: "section_1:step_1"
set_language:
content_blocks:
- "I'll communicate with you in your preferred language."
counts_as_attempt: false
next_section_and_step: "introduction:welcome"
off_topic:
content_blocks:
- "Let's focus on beginning our logic journey. Are you ready to start?"
counts_as_attempt: false
next_section_and_step: "introduction:welcome"
- section_id: "section_1"
title: "Basic Logical Statements"
steps:
- step_id: "step_1"
title: "Understanding Logical Statements"
content_blocks:
- "## Understanding Logical Statements"
- "Logic is about drawing valid conclusions from given information."
- ""
- "**Basic principle:** If A is true, and 'A implies B' is true, then B must be true."
- ""
- "**Example:**"
- "- Statement 1: All cats are mammals."
- "- Statement 2: Whiskers is a cat."
- "- Conclusion: Therefore, Whiskers is a mammal."
- ""
- "This is called **deductive reasoning** - going from general rules to specific cases."
question: "Based on this reasoning, if 'All birds have feathers' and 'A robin is a bird', what can we conclude?"
tokens_for_ai: |
The student should conclude that a robin has feathers.
Categorize as:
- correct: States that robin has feathers (exact wording doesn't matter)
- partial_understanding: Mentions birds or feathers but incomplete reasoning
- limited_effort: Very brief or unclear answer
- off_topic: Unrelated response
feedback_tokens_for_ai: |
Provide feedback on their logical reasoning. If incorrect, gently explain the deductive
process: since ALL birds have feathers, and a robin IS a bird, then the robin must have feathers.
buckets:
- correct
- partial_understanding
- limited_effort
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Praise their correct deductive reasoning and encourage them to continue."
metadata_add:
score: "n+1"
puzzles_solved: "n+1"
next_section_and_step: "section_1:step_2"
partial_understanding:
ai_feedback:
tokens_for_ai: "Acknowledge what they got right, then gently guide them to the complete answer."
next_section_and_step: "section_1:step_2"
limited_effort:
ai_feedback:
tokens_for_ai: "Encourage them to think more carefully about the logical structure and try again."
next_section_and_step: "section_1:step_1"
off_topic:
content_blocks:
- "Let's stay focused on the logic puzzle. Think about what we can deduce from the two statements."
next_section_and_step: "section_1:step_1"
- step_id: "step_2"
title: "The Contrapositive"
content_blocks:
- "## The Contrapositive"
- "Great! Now let's learn about the **contrapositive** - a powerful logical tool."
- ""
- "If we know: 'If A, then B' is true"
- "Then we also know: 'If NOT B, then NOT A' is true"
- ""
- "**Example:**"
- "- Original: 'If it's raining, then the ground is wet'"
- "- Contrapositive: 'If the ground is NOT wet, then it's NOT raining'"
- ""
- "Both statements are logically equivalent!"
- ""
- "**Practice:** We know: 'If you study hard, you will pass the test.'"
question: "What is the contrapositive of this statement?"
tokens_for_ai: |
The correct contrapositive is: "If you don't pass the test, then you didn't study hard"
or any equivalent phrasing.
Categorize as:
- correct: Correctly identifies the contrapositive (not passing → didn't study)
- partial_understanding: Gets the concept but reverses incorrectly or incomplete
- logical_error: Confuses with converse or inverse
- limited_effort: Very brief or doesn't attempt to construct the statement
- off_topic: Unrelated
feedback_tokens_for_ai: |
If correct, praise their understanding. If incorrect, explain that the contrapositive
negates both parts AND reverses them. Common error: converse (if B then A) is NOT
logically equivalent to the original.
buckets:
- correct
- partial_understanding
- logical_error
- limited_effort
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Excellent work! You've grasped an important logical concept. Explain why contrapositives are useful in reasoning."
metadata_add:
score: "n+1"
puzzles_solved: "n+1"
next_section_and_step: "section_2:step_1"
partial_understanding:
ai_feedback:
tokens_for_ai: "You're on the right track. Explain the contrapositive clearly and encourage them."
metadata_add:
score: "n+1"
next_section_and_step: "section_2:step_1"
logical_error:
ai_feedback:
tokens_for_ai: "Explain the difference between contrapositive, converse, and inverse. Give them another example."
next_section_and_step: "section_1:step_2"
limited_effort:
content_blocks:
- "Take your time. Remember: negate both parts AND reverse the order."
next_section_and_step: "section_1:step_2"
off_topic:
content_blocks:
- "Let's focus on constructing the contrapositive statement."
next_section_and_step: "section_1:step_2"
- section_id: "section_2"
title: "Syllogisms and Deduction"
steps:
- step_id: "step_1"
title: "Classic Syllogism Puzzle"
content_blocks:
- "## Classic Syllogism Puzzle"
- "A **syllogism** is a form of logical argument with two premises and a conclusion."
- ""
- "**Here's your puzzle:**"
- ""
- "**Premise 1:** All philosophers love wisdom."
- "**Premise 2:** Socrates is a philosopher."
- "**Premise 3:** No one who loves wisdom is foolish."
- ""
- "What can we logically conclude about Socrates?"
question: "What must be true about Socrates based on these premises?"
tokens_for_ai: |
The correct conclusion is that Socrates is not foolish (or Socrates loves wisdom, which also leads to not being foolish).
Categorize as:
- correct: States Socrates is not foolish, or loves wisdom, or both
- partial_understanding: Gets one conclusion but not the full chain of reasoning
- limited_effort: Too brief or unclear
- off_topic: Unrelated or makes up facts not in premises
feedback_tokens_for_ai: |
Guide them through the logical chain if needed:
1. Socrates is a philosopher
2. All philosophers love wisdom → Socrates loves wisdom
3. No one who loves wisdom is foolish → Socrates is not foolish
buckets:
- correct
- partial_understanding
- limited_effort
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Excellent deductive reasoning! You followed the logical chain perfectly."
metadata_add:
score: "n+1"
puzzles_solved: "n+1"
next_section_and_step: "section_2:step_2"
partial_understanding:
ai_feedback:
tokens_for_ai: "Good start! Can you extend your reasoning further using all three premises?"
next_section_and_step: "section_2:step_1"
limited_effort:
content_blocks:
- "Try working through each premise step by step. What do we know about philosophers? What do we know about Socrates?"
next_section_and_step: "section_2:step_1"
off_topic:
content_blocks:
- "Focus only on what the premises tell us. What can we deduce step by step?"
next_section_and_step: "section_2:step_1"
- step_id: "step_2"
title: "Truth Tables and Logical Consistency"
content_blocks:
- "## Truth Tables and Logical Consistency"
- "Sometimes we need to check if statements are consistent with each other."
- ""
- "**The Scenario:**"
- "Three friends make the following statements:"
- ""
- "**Alice:** 'If Bob is telling the truth, then Carol is lying.'"
- "**Bob:** 'I am telling the truth.'"
- "**Carol:** 'Alice is telling the truth.'"
- ""
- "Let's assume Bob IS telling the truth (as he claims)."
question: "If Bob is telling the truth, is there a logical contradiction? If so, where?"
tokens_for_ai: |
Let's work through this:
- If Bob is telling the truth (as assumed)
- Then by Alice's statement, Carol must be lying
- But Carol says "Alice is telling the truth"
- If Carol is lying (as we deduced), then Alice must be lying
- But this contradicts our assumption that Alice's statement about Bob/Carol is valid
Student should identify that there IS a contradiction, or that Carol must be lying.
Categorize as:
- correct: Identifies the contradiction or that Carol must be lying
- partial_understanding: Sees some inconsistency but doesn't fully explain it
- confused: Gets lost in the logic
- limited_effort: Very brief answer
- asking_clarifying_questions: Requests help or clarification
- off_topic: Unrelated
feedback_tokens_for_ai: |
If they're struggling, walk through it step by step. This is a harder puzzle, so be
encouraging. The key insight is following the chain of implications.
buckets:
- correct
- partial_understanding
- confused
- limited_effort
- asking_clarifying_questions
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Brilliant! You navigated a complex logical scenario. Explain the full chain of reasoning."
metadata_add:
score: "n+2"
puzzles_solved: "n+1"
next_section_and_step: "section_3:step_1"
partial_understanding:
ai_feedback:
tokens_for_ai: "You're getting there! Let's trace through what each statement implies step by step."
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_2:step_2"
confused:
content_blocks:
- "Let's break it down:"
- "1. Assume Bob tells the truth"
- "2. What does Alice's statement tell us about Carol?"
- "3. What does Carol's statement tell us about Alice?"
- "4. Do these work together?"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_2:step_2"
limited_effort:
content_blocks:
- "Take your time and work through each person's statement carefully."
next_section_and_step: "section_2:step_2"
asking_clarifying_questions:
ai_feedback:
tokens_for_ai: "Answer their question and provide helpful hints about how to approach the problem."
counts_as_attempt: false
next_section_and_step: "section_2:step_2"
off_topic:
content_blocks:
- "Let's focus on analyzing the logical consistency of the three statements."
next_section_and_step: "section_2:step_2"
- section_id: "section_3"
title: "Knights and Knaves"
steps:
- step_id: "step_1"
title: "The Island of Knights and Knaves"
content_blocks:
- "## The Island of Knights and Knaves"
- "This is a classic logic puzzle type!"
- ""
- "**The Rules:**"
- "- Knights ALWAYS tell the truth"
- "- Knaves ALWAYS lie"
- "- Everyone is either a knight or a knave"
- ""
- "**The Puzzle:**"
- "You meet two people, A and B."
- ""
- "**Person A says:** 'At least one of us is a knave.'"
- ""
- "What are A and B?"
question: "Is A a knight or a knave? Is B a knight or a knave? Explain your reasoning."
tokens_for_ai: |
Solution:
- If A is a knave (liar), then the statement "at least one of us is a knave" would be false,
meaning both are knights. But A can't be both a knight and a knave - contradiction!
- Therefore A must be a knight (truth-teller)
- Since A tells the truth, "at least one of us is a knave" is true
- Since A is a knight, B must be the knave
Answer: A is a knight, B is a knave
Categorize as:
- correct: Identifies A as knight and B as knave with reasonable explanation
- partial_understanding: Gets one correct but not both, or right answer without clear reasoning
- logical_error: Makes an error in the logical deduction
- limited_effort: Too brief or gives up
- asking_clarifying_questions: Asks for help
- off_topic: Unrelated
feedback_tokens_for_ai: |
This is a challenging puzzle! If they get stuck, suggest trying both possibilities:
"What if A is a knight? What if A is a knave?" and see which leads to a contradiction.
buckets:
- correct
- partial_understanding
- logical_error
- limited_effort
- asking_clarifying_questions
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Outstanding! You've mastered proof by contradiction. This is advanced logical reasoning!"
metadata_add:
score: "n+3"
puzzles_solved: "n+1"
next_section_and_step: "section_3:step_2"
partial_understanding:
ai_feedback:
tokens_for_ai: "You're thinking in the right direction. Try assuming A is a knave and see if that leads to a contradiction."
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_1"
logical_error:
ai_feedback:
tokens_for_ai: "Let's think through this carefully. Test both possibilities: what if A is a knight? What if A is a knave?"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_1"
limited_effort:
content_blocks:
- "This is challenging! Try starting with: 'Assume A is a knight. Then what must be true?'"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_1"
asking_clarifying_questions:
ai_feedback:
tokens_for_ai: "Answer their question helpfully and provide a hint about testing both possibilities."
counts_as_attempt: false
next_section_and_step: "section_3:step_1"
off_topic:
content_blocks:
- "Let's work through the knight and knave puzzle. Remember: knights always tell the truth, knaves always lie."
next_section_and_step: "section_3:step_1"
- step_id: "step_2"
title: "Advanced Knights and Knaves"
content_blocks:
- "## Advanced Knights and Knaves"
- "Ready for a harder one? Let's add a third person!"
- ""
- "You meet three people: X, Y, and Z."
- ""
- "**X says:** 'All of us are knaves.'"
- "**Y says:** 'Exactly one of us is a knight.'"
- ""
- "What can you determine about X, Y, and Z?"
question: "Identify whether X, Y, and Z are knights or knaves. Explain your reasoning."
tokens_for_ai: |
Solution:
- X says "all of us are knaves"
- If X were a knight (truth-teller), then "all are knaves" would be true, but X is a knight - contradiction!
- Therefore X must be a knave (liar)
- Since X is a knave, the statement "all of us are knaves" is false, so at least one is a knight
- Y says "exactly one of us is a knight"
- If Y is a knave, then "exactly one is a knight" is false, but we know at least one is a knight (not Y, not X)... so Z would be a knight
- If Y is a knight, then "exactly one is a knight" is true, and Y is that knight, so Z must be a knave
- Actually, if Y were a knave and Z were a knight, then we'd have exactly one knight (Z), making Y's statement true - but knaves can't tell the truth! Contradiction.
- Therefore Y must be a knight and Z must be a knave
Answer: X is a knave, Y is a knight, Z is a knave
Categorize as:
- correct: Correctly identifies all three with solid reasoning
- partial_understanding: Gets some right or reasoning is incomplete
- confused: Logic errors or contradictions in their answer
- limited_effort: Very brief or gives up
- asking_clarifying_questions: Asks for help
- off_topic: Unrelated
feedback_tokens_for_ai: |
This is quite challenging! Encourage their effort. If struggling, suggest working through
X first (easier), then systematically testing Y as knight vs knave.
buckets:
- correct
- partial_understanding
- confused
- limited_effort
- asking_clarifying_questions
- off_topic
transitions:
correct:
ai_feedback:
tokens_for_ai: "Exceptional work! You've demonstrated mastery of complex logical deduction. This is university-level reasoning!"
metadata_add:
score: "n+5"
puzzles_solved: "n+1"
next_section_and_step: "section_4:step_1"
partial_understanding:
ai_feedback:
tokens_for_ai: "Good progress! Let's work through this systematically. Start with X - can X be a knight?"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_2"
confused:
ai_feedback:
tokens_for_ai: "Let's break this down step by step. First, what can we determine about X from their statement?"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_2"
limited_effort:
content_blocks:
- "This is a tough puzzle! Start by analyzing X's statement. Can someone truthfully say 'we are all liars'?"
metadata_add:
hints_used: "n+1"
next_section_and_step: "section_3:step_2"
asking_clarifying_questions:
ai_feedback:
tokens_for_ai: "Answer their question and provide systematic guidance on how to approach the puzzle."
counts_as_attempt: false
next_section_and_step: "section_3:step_2"
off_topic:
content_blocks:
- "Let's focus on solving this three-person knight and knave puzzle."
next_section_and_step: "section_3:step_2"
- section_id: "section_4"
title: "Reflection and Summary"
steps:
- step_id: "step_1"
title: "Congratulations!"
content_blocks:
- "## Congratulations! 🎉"
- "You've completed the Logic Puzzles activity!"
- ""
- "**What you've learned:**"
- "✓ Basic deductive reasoning (if A then B)"
- "✓ Contrapositives and logical equivalence"
- "✓ Syllogisms and multi-step deduction"
- "✓ Truth tables and consistency checking"
- "✓ Proof by contradiction (Knights and Knaves)"
- ""
- "**Why logical thinking matters:**"
- "- Programming and debugging require logical reasoning"
- "- Critical thinking helps evaluate arguments and claims"
- "- Problem-solving in math, science, and everyday life"
- "- Avoiding logical fallacies in discussions"
- ""
- "**Your journey:**"
- "You've progressed from basic deductions to complex multi-person logic puzzles."
- "These skills will serve you well in many areas of thinking and learning!"
question: "What was the most challenging puzzle for you, and what did you learn from it?"
tokens_for_ai: |
This is a reflection question. Accept any thoughtful response about their learning experience.
Categorize as:
- thoughtful_reflection: Provides specific insights about their learning
- brief_reflection: Short but genuine reflection
- limited_effort: Very minimal response
- off_topic: Unrelated
feedback_tokens_for_ai: |
Provide personalized feedback on their journey through the activity. Acknowledge their
specific challenges and growth. Encourage continued practice with logical reasoning.
buckets:
- thoughtful_reflection
- brief_reflection
- limited_effort
- off_topic
transitions:
thoughtful_reflection:
ai_feedback:
tokens_for_ai: "Provide thoughtful, personalized feedback on their learning journey and suggest how to continue developing logical thinking skills."
metadata_add:
activity_completed: "true"
next_section_and_step: "section_4:step_1"
brief_reflection:
ai_feedback:
tokens_for_ai: "Acknowledge their reflection and encourage them to keep practicing logical reasoning."
metadata_add:
activity_completed: "true"
next_section_and_step: "section_4:step_1"
limited_effort:
ai_feedback:
tokens_for_ai: "Thank them for participating and summarize key takeaways from the activity."
metadata_add:
activity_completed: "true"
next_section_and_step: "section_4:step_1"
off_topic:
content_blocks:
- "Let's reflect on your logic puzzle journey. Which puzzle challenged you most?"
next_section_and_step: "section_4:step_1"