Monday, February 7, 2022

Earning the Girl Scout CSA Think Like a Programmer Journey (with Actual Programming!)

 

None of my Girl Scouts, including my own kids--and especially including me!--have ever been super enthused by the Girl Scout Journeys. Some are definitely better than others, and Will, who's obsessed with earning badges and awards, always completes the three Journeys needed to Summit at every level, but I'm not gonna lie--my favorite thing about the Think Like a Programmer Journey is how fairly quick and straightforward it was.

Technically, you can complete the Think Like a Programmer Journey without touching a computer, as its focus is on teaching the process of computational thinking that programmers use, not on actually, literally programming. But incorporating actual, literal programming made the Journey a LOT more interesting to the kids, and added additional STEM enrichment into our school days.

As the intro to the Journey, we watched this Code.org video about how computers organize, process, and represent information:

We discussed a couple of ideas related to this video: 1) the importance of programming solutions that are workable and understandable to the user (not just the programmer), and 2) computational thinking as a method of problem-solving that breaks down problems to manageable bits and works towards solutions that are beneficial to the user--not just the programmer!

These ideas are applicable to Girl Scouts in a lot of ways, particularly in the ways that we try to be of service. Because Girl Scouts often requires Girl Scouts to create and enact service projects in order to earn awards--or even badges, sometimes!--it can be VERY tempting to get some of these service projects done in ways that are expedient for the Girl Scouts, and not necessarily in ways that best serve the beneficiaries. It never hurts, then, to have a reminder that the beneficiaries of our projects are the ones who need to be able to understand and work with our solutions--and in a real way, not just the kind of surface level that could earn a kid a Journey but that we all know good and well isn't going to result in any kind of lasting change for the better.

To that end, the kids started a working doc in which they practiced coming up with needs/problems and proposed solutions for various user groups. They worked in the document periodically throughout this Journey, and if you read down their lists you can actually see them begin to be more thoughtful and detailed, and to think more deeply and specifically about the real needs and problems of their user groups. 

I'd actually anticipated that something on this list would eventually inspire their TAP, but nope! If only life/Girl Scouts was that easy!

On another day, the kids and I explored how language choice affects the value of a solution. Fortunately, I've been telling the kids for their entire lives (usually after they've smugly corrected someone's grammar, but sometimes right before I correct their own grammar, ahem) that "effective communication is good communication." In other words, if you get your point across, that's good communication, whether you've gotten your point across using invented spelling because you're newly literate or lots of gestures combined with a very limited vocabulary because you're in Quebec trying out your Parisian French 101 on a French-Canadian hotel clerk.

Ahem.

The point is that a programmer is in charge of figuring out the most effective way to organize and represent knowledge and information, and any method of effective communication is fair game. 

To practice this, the kids tried out the Representing the Alphabet Activity for the CSA Think Like a Programmer Journey in the Volunteer Toolkit. 

I wouldn't usually do all this printing and cutting for a single activity, and I did think about trying to substitute LEGOs, but whatever:

I really like how each kid chose to represent her word using a completely different method. Syd's uses a vertical two-animal pair to represent each letter--


--while Will's relies on a very precise arrangement of stacked papers:


And yet they were both able to read the other's words without struggle! Yay for good communication!

Before sending the kids to work on their user groups doc some more, I helped them make the connection that they can approach a problem the same way they approached a message to be decoded--by working backwards and illuminating the underlying algorithm. If only every problem had its handy-dandy decoding sheet all written out for us!

Another day's lesson was also a real-life programming activity: binary!!! I got out the white board to teach the kids how to read and count in binary, discussing, as well, some other number systems that use different bases. The Sumerians, for instance, used a sexagesimal system!

To make sure they grasped the concept, I gave the kids this set of binary puzzles to work. One of them needed a couple of tries, but in the end they both mastered Base 2! That meant that I could tell them that these ones and zeros are also called bits, and you can use a bitmap to visually represent the information encoded in binary... or you can use it to make a picture! We Google Imaged some examples of bitmaps, then the kids used the Pixelation widget on Code.org to make their own. They enjoyed the open-ended free play of creating black and white and color pixel images, while practicing their binary and learning hexadecimal. 

Our special activity for this Journey was building a computer from a kit:


The Kano kit is a super fun walk-through of assembling the parts of a computer, then setting it up. It's got Raspberry Pi to support more sophisticated programming activities, or a variety of add-ons that you could purchase to give a younger kid different coding experiences. 

After building the computer, we used another computer analogy to think about user-centered needs. If every need/problem is an output, then the reasons why a problem is happening or a need is occurring are the inputs. You can decode the problem the way that we decoded the animal alphabets, trying to figure out the inputs. When you think you understand the input, you can work towards a solution that changes that input and produces a better output.

The kids did some more programming in later days--Will made me a table tennis game, for one!--and played with our Turing Tumble, but once kids understand the concept of computational thinking, they're actually ready to use computational thinking to solve a community problem.

The kids' TAP dealt with the deficit of good educational materials to teach the Robotics badges, especially to younger levels. When we were learning the parts of a robot, the kids made their own graphics, diagrams, and definition cards, but it's probable that most troops wouldn't have that kind of time. But those visual, tactile learners still need to learn the material!

To solve the problem, the kids created this set of educational materials that can be presented online or printed. 

Click here for the complete Robot Slide Deck.

If printed, they can be copied at different sizes and the definitions can be used to label the robot graphic. It's a pretty nifty plan, and you can tell that a couple of homeschooled kids who've had a heavily Montessori-inspired education created it!

No comments: