Students learn about thought processes involved in converting problems into subproblems and logical steps. Teams investigate the characteristics and write examples of flawed instructions as well as effective programs, using technical terminology to explain their revisions.
An exciting and unique feature of this challenge is that it is “unplugged”, enabling students to identify, explain, and apply computational learning through hands-on activities.
In this challenge, students learn about the thought processes involved in breaking down problems and converting them into logical steps. Throughout the challenge, students investigate real-world problems that can be broken down into smaller subproblems. They explore complex programming concepts as they try to systematize activities that they do on a daily basis.
An exciting and unique feature of this challenge is that it is “unplugged.” Many young people spend a large amount of time looking at screens (both in and out of school). The Programming Each Other Challenge allows students to explore the thought processes of programming while being active, whether they are working with their teams to learn a new card trick or learning new dance steps.
To start the challenge, students receive a letter from a fictional publisher requesting ideas for a book that will introduce young children to programming. The publisher asks students to write programs for accomplishing everyday tasks. In order to make the story more interesting and the learning goals more complex, students learn about the characteristics and write examples of flawed instructions as well as effective programs, using technical terminology to explain their revisions.
Throughout the unit, students explore some of the basic challenges inherent to programming. They discuss and practice increasingly complex tasks with each successive activity. Each new level of difficulty is designed to introduce specific programming concepts, including:
Each lesson includes optional tech extensions, opportunities for students to apply their knowledge and present their findings in a collaborative environment.
Lesson 1: Introducing the Challenge (45 min) — Students receive a letter from CodeWorks Publishing, a company that is writing a book to teach young children about programming. Students are asked to learn more about programming and to write sample “absent-minded” and corresponding well-thought-out programs to be included at the end of their book.
Lesson 2: Writing Instructions (45 min) — Students explore the everyday challenge of sorting same-colored socks into pairs. They start by breaking down the simplest form of the task—using a fixed number of identical socks—into component steps. In teams, they write instructions for a robot to sort a pile of socks, test their instructions, and share them with the class. They discuss how their instructions could be misinterpreted and think about ways to correct those misinterpretations.
Lesson 3: Looping Loops (45 min) — Students review their instructions from the previous session and apply what they learned to a more challenging problem: writing a program for a robot to sort and pair a large (or even unspecified) number of socks. The goal of this activity is to introduce the concept of loops in programming. Students then write a program to explain how to perform a more complex task (such as performing a dance or making s’mores) so other students can follow them.
Lesson 4: If … Then … What? (45-90 min) — Students begin to incorporate decision-making within programs. They revisit the sock-sorting-and-folding challenge, where their robot must decide whether two socks are a match and what to do if they are not. Students practice developing an algorithm that includes decision-making by creating a “guess my number” program.
Lesson 5: Making a Decision (45-90 min)- Students extend their understanding of conditionals to include both if-then-else statements and nested-if statements. They apply their new understanding by updating their algorithms to sort a pile of socks that now includes more than one color. As a class, they discuss different strategies for how to tackle the problem, and update their program using conditionals and loops to complete the task in the optimal way.
Lesson 6: Data Inputs and Outputs (45-90 min) — Students formalize some concepts they worked with in the previous activities but have not yet put names to, including variable, input, output, data, and database. After choosing one of three activities, they write a program that includes input, output, and at least one variable.
Lesson 7: Breaking Down the Problem (45-90 min) — Students on breaking down a larger problem into smaller subtasks. They explore several options for how to break down a task and discuss how each strategy is different and under which conditions one algorithm may be more efficient than another.
Lesson 8: Programming Our Absent-Minded Task (45 min) — Students choose their programming tasks for the final CodeWorks challenge and begin to decompose the tasks. They begin to develop their absent-minded programs by combining the various bugs (errors in computer programs that lead to incorrect or unexpected results) that they’ve experienced in previous activities.
Lesson 9: Making Our Program Work (45 min) — Students develop a well-thought-out program to accompany the absent-minded program they developed in Activity 8. They debug their absent-minded programs by looking for places where their code is imprecise or inefficient, and then try to create the best possible programs for their tasks.
Lesson 10: Preparing Our Presentations (45 min) — Teams develop presentations for the two programs they created. Students are reminded how their work will be assessed.
Lesson 11: Presenting Our Projects (45-90 min) — Each team first presents its absent-minded program, complete with an explanation of how the program can go wrong, and then the companion program, with an explanation of why this program will complete the task correctly and efficiently. Students reflect on how their understanding of programming has grown since they began the challenge.
|PEO Activity / Section||Supporting Materials|
|Activity 1 Preparation; Steps 5-6||
Exact Instructions Challenge | How to Make a Perfect Sandwich
Exact Instructions Challenge | Ramen Edition
The two children in this family write instructions for tooth-brushing and making toast. The first child’s instructions for brushing teeth do not work (0:55–2:08). The second child’s instructions for making toast (2:09–3:59) also fail. The second child then gives instructions to her mother for brushing her teeth (3:59–5:09). In the last segment, the mother follows the younger child’s instructions for making toast (5:10–5:44).
NOTE: Some of the suggested video segments include instructions for two tasks. You may want to show a portion of those videos depicting only one task, or have students concentrate on just one task when they write instructions later in the activity.
|Activity 1, Step 18|
|Activity 2, Preparation and Unplugged Extension||
The Easiest Card Trick for Beginners—You Can’t Screw Up!
For an added challenge, play the video for students without sound.
Make sure to show it at least twice so students have time to write down everything they see
|Activity 2, Tech Extensions||
Blockly Games: Maze
Code.org: Star Wars: Building a Galaxy with Code Blocks
|Activity 3, Preparation|
|Activity 3, Step 12, What to Watch For|
|Activity 3, Tech Extensions||
Code.org: Hour of Code—Mark Zuckerburg Teaches Loops
Code.org: Lesson 13: Maze Loops
Code.org: Lesson 14: Bee Loops
Blockly Games: Maze
Code.org: Dance Party
|Activity 4, Tech Extensions||
Code.org: Hour of Code—Bill Gates Explains If Statements
Code.org: Lesson 11: Conditionals in Bee
Blockly Games: Maze
|Activity 4, Background, Sorting||
LEGO Bubble Sort
Insertion Sort, Kahn Academy
Visualization and Comparison of Sorting Algorithms
|Activity 5, Tech Extension||
Flocabulary.com: Coding: Conditionals
|Activity 9, Tech Extensions||
Code.org Lesson 5: Maze: Debugging