I planned this lesson for my students because in order for them to be able to "Generate and compare multiple solutions that use patterns to transfer information," I needed to build up their schema with some existing solutions. Binary code is referred to in the clarification statement of the standard as "a grid of 1's and 0's."
Before I began the lesson, I wrote "100100 100101" on the board. I told my class that this was a message in a language that all computers can read, and that by the end of the day, they would be able to read this message too.
I had my students write the focus question, "How can you write a message written in binary?" in the science notebooks.
I began by reviewing our counting system. I talked about how we use 10 digits, (0-9) to count, and because we have 10 digits, we don't need to go onto a new place value until we use up all 10 digits. So every time we move a place value to left, it goes up by a power of 10. I then explained that computers can't read those digits. At there most basic level, they are just circuits. They only understand on and off, like a light switch. This is what a binary system means, only two choices, on or off, and we can write it using 0 or 1.
I wrote a chart with decimal on the left, and binary on the right, as you can see on Binary Numbers. I numbered the decimals 0-10, and left the binary blank. I then drew a binary place value chart, beginning on the right, and labeled it 1, 2, 4, 8, 16, and 32. I explained that if you only had 2 digits, 0 and 1, you would need to move to a new place value every time a number doubled. I had my class write these charts in their science notebooks as well.
I started them at 0. I asked how they could write a 0 with only 0's and 1's. They guessed 0, so far so good. Then 1 for 1, still good. That's where it got interesting. I asked them how they would write a two. I explained that because we already used all the digits available to us, we had to go to the next place value, so 10 has a 1 in the 2's place, and no 1's. (They were all lost at this point. You probably are too.) I asked how you could make a 3 out of 1's, 2's, and 4's, and they knew it was a 2 and 1, so I showed them we could write that as 11, 1 in the 2's place, and 1 in the 1's place. After they started to get the hang of it, I started calling on volunteers to explain it, and by the time we got to 10, they had it!
(Please note that I later realized I should have included 0's in the places to the left of the digit. This is not shown in the photo. You might count up to 10, like I did, but leave yourself space to fill in the 0's to the left.)
Next I asked them to think how much more work it would be for letters, where we use 26 characters instead of only 10. I showed them how we could use a simple substitution code (Binary Letters), where 1 stood for A, 2 for B, etc., and then use binary to make the number for each letter. I proposed that since we wouldn't need the 32s place, we could use that as a marker. If the 32 place was a 0, the rest of the code stood for a number, and if it was a 1, it was a letter. You can see where I added this on the Binary Numbers photo. I returned their attention to the message I began the lesson with, and many figured out it said "hi" right away. Finally, I had them write their names in binary.
It seems a lot harder to explain here than it actually was with my kids. They were coding like champions by the end of the lesson.