Unless you’ve been hiding under a rock for the past year, you’ll have noticed that the campaign to teach kids (and adults) how to code is everywhere you turn. As parents, politicians, and educators debate how to produce more graduates in technology fields, the push to introduce computing at an earlier age gets stronger. For example, MIT’s Lifelong Kindergarten group is collaborating on programming software aimed at kids in preschool to second grade. There are even board books for babies on HTML and CSS! We suspect that such novelties are more for tech parents’ enjoyment.
IMACS believes these efforts are well-intentioned and some, when implemented, will be well-designed. But before you click over to Amazon to buy your little drool monster a book on Web design, IMACS can offer you a few examples of how to introduce computational thinking to children through easy activities that are familiar to you, even if you think you’re computationally challenged.
Computational Thinking vs. Coding
This short and informative paper by Jeannette Wing, head of the Computer Science Department at Carnegie Mellon University, explains clearly what computational thinking is and is not. The following excerpted quote is a good summary of the focus of this blog post:
Learning to think abstractly is an essential skill if you want to succeed in computer science. It makes solving problems easier, which in turn makes working on those problems more fun. Notably, students can learn to think like a computer scientist without entering a single line of code into a computer. In fact, our experience in teaching CS is that writing computer programs is trivial for students who first develop computational thinking skills. Let’s see where in our daily lives we can show kids relatable examples to help them make the transition to abstract thinking.
Stacks and Queues
In computing, a stack is an object in which data expressions are stored and retrieved in such a way that the first data expression to be stored is always the last data expression to be retrieved. It is an example of a so-called Last-In-First-Out (LIFO) object. The same idea applies to various real-life constructs that young kids encounter, even babies who love board books.
Obviously, you can’t explain LIFO with words to a baby and expect the baby to understand, but you can certainly demonstrate the concept with your actions. Take the classic Fisher-Price Rock-a-Stack, for example. Start with the rings off the cone and then load them on in the intended manner with the blue ring going on first. Try to get just the blue ring off. Can you do it while the other rings are still on the cone? No, you have to take the rings off one by one with the blue ring coming off last.
Older kids can appreciate the same concept with examples they come across in their lives: unloading plates from the dishwasher into the cupboard, setting the table with said plates the next day, selecting a product such as cosmetics from a store shelf, putting said product back if you decide not to buy it. You get the picture.
A queue is similar to a stack in that it is an object used to store data expressions. In the case of a queue, however, the first data expression to be stored is always the first to be retrieved. Queues are examples of First-In-First-Out (FIFO) objects. Kids encounter them every time they go through a checkout line or a drive-thru. Switch that Rock-a-Stack cone for an empty paper towel roll, and you’ve got yourself a baby-friendly queue.
Sorting is one of the oldest problems in computer science. Although the end goal (an ordered list) is conceptually easy to understand, getting there can be complex. Add to that the need for sorting algorithms to be computationally efficient and you’ve got yourself an interesting abstract puzzle.
If your kids are old enough to know or learn how to put words in alphabetical order, then make a project out of sorting the books on their bookshelf. Decide on a sorting key such as title or author’s name. For this example, we’ll use title. For the first shelf, ask your child to try a simple bubble sort. Traverse the shelf from left to right, compare the titles of two books, and swap them if they are in the wrong order. Repeat this process until all books on this shelf are in the correct order.
For the next shelf, you can use a simple insertion sort. Take all the books off that shelf and put them in order one by one in a pile on the floor. Each time that you add a book to the ordered pile, be sure to put it in the right place relative to the books that were previously added.
Now that you have two properly sorted sets of books, you and your child can work together to sort all books. Sounds like a good time to use a merge sort. Move the sorted books off the first shelf into another pile on the floor while keeping them properly ordered and separate from the pile of books from the second shelf. Reshelve the books as follows: repeatedly compare the titles of the two books that are atop the two piles, selecting the one that goes first, and continuing until both piles are exhausted.
Object Oriented Programming
An “object” in computer programming is a complex structure containing data fields and instructions. These objects interact with each other to create even more complex computer programs. The beauty of object oriented programming is that you can reuse objects to do common computing tasks without having to reinvent them each time. Over time, programmers can build up a “library” of useful objects.
The following analogy certainly isn’t perfect, but it will help get the point across about these seemingly mysterious objects. If you’re planning an outing with kids, you’ll need a few things to help keep your sanity: nourishment, entertainment, and possibly a change of clothes. So grab three bags and make some objects! In the nourishment object, you’ll probably need fruits, carb snacks, a protein, and beverages. For the entertainment object, how about art supplies, books, sporting equipment, and portable gaming device? Kids are made to get dirty, and the weather may change, so pack a top, bottom, and outerwear in the clothing object. Throw those “objects” in your huge tote “library” and you’re ready to go!
Think Like a Computer Scientist
Planting the seeds of computational thinking, especially the ability to think abstractly, is really a matter of recognizing the examples in your life that can be used to foster discussion with your children. Like any new endeavor, remembering to look at events in a computational light takes practice. You might just find yourself thinking like a computer scientist when it comes to solving the data problems in your own adult life.