I’ve seen a number of articles written by developers and IT folks promoting how they won’t be teaching their young kid to code. Of all of the arguments against teaching kids to code, the only one that really strikes me is the fact that a lot of parents don’t know how to code themselves. Now, I expect it is possible to not know French but manage to cobble together some approach to teaching your kid French. It’s a lot easier (and the results are apt to be better) if you actually know some French. My decision to teach my daughter to code doesn’t mean it’s a vital skill that every kid needs to learn to prepare them for future jobs. But, since it is something I do, it is something I share with my daughter. If she weren’t interested in what is going on beyond getting it all typed in, I’d stop. But she’s interested in exploring beyond what the coding book tells her to type. As we created a little character on the screen, Anya wondered if we could make different little figures. At different locations. In different sizes. In different colors. In using Scratch, she develops characters and game play.
Why teach a seven year old kid to code? Why do you teach your kids anything apart from the mandatory school curriculum? Working on the car? She can help and learn a bit about how vehicles work. I replaced the tube on my bicycle tire, and she helped. She was aware that bicycle tires had replaceable tubes that could explode on you … which was useful knowledge when she blew out her own tube. She sews with me — embroidery and a machine — because being able to patch clothes saves having to replace things as frequently. Mowing the lawn – she’s aware that a house with a lot of land requires work and knows how to safely operate both the push and riding mowers. Gardening – she knows where food comes from, how to grow her own, and how much work actually goes into feeding the country. She’ll participate in chicken keeping – somewhat so she knows where eggs come from and the amount of work that goes into egg production, but also because pets are fun (and our chickens will certainly be more socialized with her involvement). We share all sorts of activities with our daughter because we enjoy them. Some intrigue her, some don’t. But how do you learn where your interests are if your exposure is limited to reading and math for the first decade, then science and history for the next almost decade?
All of that provides useful, practical knowledge. And learning to code is certainly useful and practical. But the utility of such knowledge, the practicality of such knowledge isn’t the reason I am teaching my daughter to code. Or, for that matter, the reason I’ve taught her anything else at home. These activities involve deductive reasoning, analytical thought, problem solving, research skills, or accepting instruction from others. All of which are generally useful in life.
A few of the books I got for Anya are introductions to programming — Python, C++, and this GUI block-based system called Scratch. She likes using Python because Scott and I use it, but she absolutely adores Scratch. She has A Beginner’s Guide To Coding (Marc Scott) that I picked up from Book Outlet (I get a bonus 10$ when someone uses my referral link) for a couple of bucks. We’ve got a studio of our games online, and she’s excited to share the games with family members.
Tricks we’ve leaned so far:
- The UI will not match a book written a few years ago 🙂 This reminded me a bit of the “Internet Directory” book I had in 1994 … an obviously silly concept today, but a completely reasonable thing in 1994 when a decent bit of the content was still modem numbers. A book about a UI … it’s a good base — providing great first projects. But it took Anya a little while to accept that, while the book quite clearly told her to click an icon that looked like this … in the intervening 18-24 months, the UI had changed. How did I know this is what you click now? I mean, other than the fact it goes into the thing that has the same function as the one your book describes? A good guess!
- You can create variables with the same name. I am certain they are assigned some underlying UID that you never see, but if you have two variables named ‘score’ and the score doesn’t seem to be incrementing … look at your variable list.
- Variable scope of “this sprite” and “all sprites” is straight-forward until you create clones. “This sprite” means “this clone of a sprite”. We had a “all sprites” variable for speed and all of the clones will change speed each time a new clone pops in. This is cool if it’s what you want to do. I’ve also created variables scoped to “this sprite” to build clones that move at different speeds.
- You cannot, unfortunately, change a variable’s scope after you create it. You need to make a new one.
- The “glide” motion isn’t good for sensing collision. While the glide is in progress, that’s the block that is executing. Anya has a game where a crab collects crystals while avoiding divers which uses the fact you cannot check if Thing1 is touching Thing2. The grab can move through gliding divers with impunity. If you want to detect collisions, use a loop where the X and Y coordinates are changed in small increments instead of glide. Technically, there’s no collision detection while my X coordinate is changing, but that’s such a brief time interval that you cannot effectively avoid bumping into the other sprite while it moves.
- You can avoid the sprite being moved off of the screen to avoid collision by adding a bounce when the sprite is on the edge.
- You need to zero out your variables when the green flag is pressed, otherwise replaying the game by clicking the green flag again produces really strange behavior (you’ve already won or lost)
- Fractions can be used in places where they have integer examples. Specifically, you can pause for fractional seconds.
- When using clones, hide the “base” sprite that exists in the ‘when green flag clicked’ instantiation; use a ‘show’ in the ‘when I start as a clone’ block. Otherwise you have one sprite sitting at the edge of the screen
- “My Blocks” is used to build functions. In Anya’s Simon Says… game, we use the pseudorandom number generator to select “Simon’s” instructions and call a block based on the generated number.
- Glass vessels – glass cup, graduated cylinder, etc
- Coffee filter
- Shish kabob skewers
- Colored markers – ideally include a few black markers from different companies
- Cut the coffee filter into strips
- About 1” from the bottom of the strip, put a dot using one of the markers
- Skewer the strip at the top and hang over a glass of water
- Hang the strip over the glass
- Carefully fill the glass with water until it just touches the bottom of the coffee filter strip.
- It will take a few minutes for the water to move up the strip. Once the water has finished moving up the strip, take the skewer and strip off the glass. Empty the glass of water, then place the strip and skewer back on the glass to dry.
- Notice how different inks are made of different color combinations. Notice different inks carry different distances up the filter strip.
In addition to a Science Experiments For Covid19 Break, lots of e-books from the local libraries, the free learn-at-home program from Scholastic, and a handful of new physical books, I’ve got four daily educational activities for Anya during this school not-a-break:
10:30 Cleveland Science Center Curiosity Corner Experiments https://www.youtube.com/user/GreatLakesScience
11:00 Cleveland Metroparks Zoo Animal info https://www.facebook.com/ClevelandMetroparksZoo
13:00 The Kennedy Center / Mo Willems Drawing https://www.youtube.com/user/TheKennedyCenter
15:00 Cleveland Metroparks Naturalist https://www.facebook.com/ClevelandMetroparks
There are two get-moving videos that we’ve checked out … but it’s maple sap season so most of our physical activity is “hike in the woods and collect sap” 🙂
Wednesday @ Noon, https://www.clevelandinnercityballet.org/ does a virtual ballet lesson
Daily, not live, https://www.facebook.com/DominiqueMoceanuGymnasticsCenter/ has mini-workouts
There’s a challenge in teaching history to young people — whilst it is not good to proceed through life ignorant of what has come before you, there are facets of history that are simply incomprehensible to a five year old kid. Explaining why some people are afraid of the police, describing the point of the military … it is a snarl of sociological and political facts, individual experiences … there’s a good and a bad side, but it is difficult to understand points of view without the entire history that created that point of view (a bit like coupling Zinn’s People’s History with Johnson’s History of the American People and calling that a balanced history lesson). I used to advocate for the inclusion of fictional works in University history classes — while the story itself may not be true, fictional works provide a picture into the reality of the time. History provides a context for books, and books provide a context for history. Arthur Miller was not randomly enamored with the Salem witch hunts.
Sadly, Anya’s teacher has begun down the path of history without context. Today (why not yesterday!?!) she taught the kids that “bad people” crashed planes into buildings in DC and NYC, as well as PA. Which left me to try explaining that it’s not like half a dozen people woke up one morning and thought it might be a lark to try flying an aeroplane … only to find it wasn’t as easy as it looks on TV. It was an organized group executing a plan. It was also a group organized partially because of terrible things done across the globe. A cause can be just without justifying any action taken in support of the cause. The validity of a cause doesn’t make the action right any more than “he hit me first” makes slugging your brother right.
A lot of nation-states, countries, and people have done a lot of terrible things to one another in the name of just causes … the events of which the teacher spoke is an egregious example.
I’ve found a lot of worksheets for visualizing addition and subtraction, and even a few for multiplication. But I could not find any for division. To fill this gap, I made a quick cat themed division visualization worksheet for Anya.
For the problem X ÷ Y, there are X cats in the row below it. Circle groups of Y cats, and count the number of groups. If there are no cats “left over”, then you’ve got the answer. There is one with cats “left over” to introduce the idea of a remainder. Primarily, though, I wanted to focus on the idea of circling groups of Y and counting the groups to find the answer.
There are some things that a young kid just needs to know as they venture out into the world — be that a trip to the zoo or a day at preschool. Their address and a parent’s phone number are high on that list. I made a phone number bracelet for her — number beads and a few sparkly stars with a magnetic clasp – for her first trip to the zoo, and I’ve been adding sparkly stars to make it larger as she grew. She more or less accidentally memorized our phone numbers from reading the bracelet. But learning our address wasn’t so easy. I suspect the impetus behind “make a song out of it” isn’t that it’s easier to remember the song but that a kid is quite willing to sing something they’re not normally willing to repeat. Anya wasn’t particularly excited to sing our address either, so the traditional method was out.
Instead, we play a lot of games where she buys something from me (where do you want this unicorn delivered?) or has to get a license or permit (you need a license to fly this aeroplane, certainly need a dragon permit before you can own one, construction requires zoning and building department approval) and she needs to provide her address as part of the game. While she didn’t want to repeat the address as a learning experience unto itself, she happily accepted my prompts, repeated, and memorized the information as an incidental component of the game.
Before she knew the address reliably, I made sure she knew to tell people a regionally well-known (and Google-able) fact about the town. It’s a small town, so really getting to the police here and telling them we live across from the mini golf course would suffice. Fortunately, I never had to find out if a stranger who happens across a small child lost in the woods would be willing to search for buzzard day and acquiesce to her request to call the police at the Buzzard Day township. But I figured that had a better shot than nothing to go on. Plus, I figure it’s a good fallback position if she’s panicked and unable to come up with the address.
I’ve been trying to play some more teaching games with Anya. Today’s activity was building our own guitar-like instrument. A small box with a hole cut in it would work well, but we used a couple of her board books. Stretch a few rubber bands around the book (I’m a little uptight, so I put them in a specific tonal order … hers are a haphazard arrangement), then insert something under the bands along the book to raise the bands up a little bit from the book. A wooden block, a marker, and a glowstick all worked well. If you put the object toward the center of the rubber bands, then you get two different notes per band.