By “programming” one another to draw pictures, students will begin to understand what programming is really about. The class will begin by having students instruct each other to color squares in on graph paper in an effort to reproduce an existing picture. If there’s time, the lesson can conclude with images that the students create themselves.
- Understand the difficulty of translating real problems into programs
- Learn that ideas may feel clear and yet still be misinterpreted by a computer
- Practice communicating ideas through codes and symbols
Materials, Resources and Prep
For the Student
For the Teacher
Getting Started (15 min)
This lesson has two new and important words:
Algorithm – Say it with me: Al-go-ri-thm
A list of steps that you can follow to finish a task
Program – Say it with me: Pro-gram
An algorithm that has been coded into something that can be run by a machine
In this activity, we are going to guide each other toward making drawings, without letting the other people in our group see the original image.
For this exercise, we will use sheets of 4×4 graph paper. Starting at the upper left-hand corner, we’ll guide our teammates’ Automatic Realization Machine (ARM) with simple instructions. Those instructions include:
- Move One Square Right
- Move One Square Left
- Move One Square Up
- Move One Square Down
- Fill-In Square with color
For example, here’s how we would write an algorithm to instruct a friend (who is pretending to be a drawing machine) to color their blank grid so that it looks like the image below:
That’s simple enough, but it would take a lot of writing to provide instructions for a square like this:
With one little substitution, we can do this much more easily! Instead of having to write out an entire phrase for each instruction, we can use arrows.
In this instance, the arrow symbols are the “program” code and the words are the “algorithm” piece. This means that we could write the algorithm:
“Move one square right, Move one square right, Fill-in square with color”
and that would correspond to the program:
Using arrows, we can redo the code from the previous image much more easily!
Start your class off in the world of programming by drawing or projecting the provided key onto the board.
Select a simple drawing, such as this one to use as an example.
This is a good way to introduce all of the symbols in the key. To begin, fill in the graph for the class — square by square — then ask them to help describe what you’ve just done. First, you can speak the algorithm out loud, then you can turn your verbal instructions into a program.
A sample algorithm:
“Move Right, Fill-In Square, Move Right, Move Down
Fill-In Square, Move Left, Move Left, Fill-In Square
Move Down, Move Right, Fill-In Square, Move Right”
Some of your class may notice that there is an unnecessary step, but hold them off until after the programming stage.
Walk the class through translating the algorithm into the program:
The classroom may be buzzing with suggestions by this point. If the class gets the gist of the exercise, this is a good place to discuss alternate ways of filling out the same grid. If there is still confusion, save that piece for another day and work with another example.
If the class can shout out the algorithm and define the correct symbols to use for each step, they’re ready to move on. Depending on your class and their age, you can either try doing a more complicated grid together or skip straight to having them work in groups on their Four-by-Fours Activity Worksheet.
Have the class imagine that your arm is an Automatic Realization Machine (ARM). The idea of “algorithms” and “programs” will be brought to life even further if students feel like they’re actually in control of your movements.
Activity: Graph Paper Programming (20 min)
- Divide students into pairs.
- Have each pair choose an image from the worksheet.
- Discuss the algorithm to draw that image with partner.
- Convert algorithm into a program using symbols.
- Trade programs with another pair and draw one another’s image.
- Choose another image and go again!
Wrap-up (5 min)
- What did we learn today?
- What if we used the same arrows, but replaced “Fill-In Square” with “Lay Brick”? What might we be able to do?
- What else could we program if we just changed what the arrows meant?
7) Graph Paper Programming Assessment
Use these activities to enhance student learning. They can be used as outside of class activities or other enrichment.
Better and Better
- Have your class try making up their own images.
- Can they figure out how to program the images that they create?
- As the teacher, draw an image on a 5×5 grid.
- Can the class code that up along with you?
Connections and Background Information
ISTE Standards (formerly NETS)
- 1.b – Create original works as a means of personal or group expression.
- 1.c – Use models and simulation to explore complex systems and issues.
- 2.d – Contribute to project teams to solve problems.
- 4.b – Plan and manage activities to develop a solution or complete a project.
- 4.d – Use multiple processes and diverse perspectives to explore alternative solutions.
CSTA K-12 Computer Science Standards
- CPP.L1:3-04 – Construct a set of statements to be acted out to accomplish a simple task.
- CPP.L1:6-05. Construct a program as a set of step-by-step instructions to be acted out.
- CT.L1:3-03 – Understand how to arrange information into useful order without using a computer.
- CT.L1:6-01 – Understand and use the basic steps in algorithmic problem-solving.
- CT.L1:6-02 – Develop a simple understanding of an algorithm using computer-free exercises.
- CT.L2-07 – Represent data in a variety of ways: text, sounds, pictures, numbers.
NGSS Science and Engineering Practices
- K-2-ETS1-2 – Develop a simple sketch, drawing, or physical model to illustrate how the shape of an object helps it function as needed to solve a given problem.
- 3-5-ETS1-2 – Generate and compare multiple possible solutions to a problem based on how well each is likely to meet the criteria and constraints of the problem.
Common Core Mathematical Practices
- 1. Make sense of problems and persevere in solving them.
- 2. Reason abstractly and quantitatively.
- 3. Construct viable arguments and critique the reasoning of others.
- 6. Attend to precision.
- 7. Look for and make use of structure.
- 8. Look for and express regularity in repeated reasoning.
Common Core Math Standards
- 2.G.2 – Partition a rectangle into rows and columns of same-size squares and count to find the total number of them.
Common Core Language Arts Standards
- SL.1.1 – Participate in collaborative conversations with diverse partners about grade 1 topics and texts with peers and adults in small and larger groups.
- SL.1.2 – Ask and answer questions about key details in a text read aloud or information presented orally or through other media.
- L.1.6 – Use words and phrases acquired through conversations, reading and being read to, and responding to texts, including using frequently occurring conjunctions to signal simple relationships.
- SL.2.1 – Participate in collaborative conversations with diverse partners about grade 2 topics and texts with peers and adults in small and larger groups.
- SL.2.2 – Recount or describe key ideas or details from a text read aloud or information presented orally or through other media.
- L.2.6 – Use words and phrases acquired through conversations, reading and being read to, and responding to texts, including using adjectives and adverbs to describe.
- SL.3.1 – Engage effectively in a range of collaborative discussions (one-on-one, in groups, and teacher-led) with diverse partners on grade 3 topics and texts, building on others’ ideas and expressing their own clearly.
- SL.3.3 – Ask and answer questions about information from a speaker, offering appropriate elaboration and detail.
- L.3.6 – Acquire and use accurately grade-appropriate conversational, general academic, and domain-specific words and phrases, including those that signal spatial and temporal relationships.