Last month I blogged about the Hour of Code which occurs during Computer Science Education Week. Little did I know that it would prompt further conversations geared around wondering whether or not an hour makes a difference. My post by no means was the be all and end all of coding or computational thinking but was meant to spark conversations, perhaps an interest and possibly support educators for whom coding or computational thinking might be new. To be clear, I know that coding for an hour during that week might not have a significant impact in the grand scheme of things, but the opportunities that it provided for my students certainly had a significant impact. While these opportunities should exist on a daily basis, let’s face it, weeks like this often allow for conversations amongst educators to be had and provide spaces for collaboration. This was the case for me and my students.
I think that we sometimes forget that there is a continuum of learning – even for educators – and while everyone has strengths and areas of need, those strengths and areas of need vary from person to person. Unless we’re willing to start somewhere and be vulnerable with colleagues, we can miss out on the chance to learn with incredible colleagues. This year, my students had the chance to participate in coding activities with 3 other classes and for them, it was an exercise in developing greater empathy; growing in clear communication; and problem solving. At the end of the week, coding was the tool that facilitated this learning for my students and they were able to help younger students develop their own set of problem solving and computational skills.
That being said, this post, (part 2) is really to go a little deeper into what I believe computational thinking is about. I’ve always seen coding as being one, creative way to helping students develop computational thinking skills. I’ve learned that computational thinking is about solving problems, using similar methods as would a computer. There are four kills that make up computational thinking:
- Algorithmic Thinking – using algorithms to show the different steps in a solution or process. This can be applied across subject areas and can help to outline the process by which something is accomplished. When students are using some of the coding activities mentioned in my previous post, they are thinking about the steps needed to move through a maze or a specific sequence to achieve a goal. In language, students are often taught procedural writing. These procedures are used in recipes and in instruction manuals. In Science, we can think of this as the execution of an experiment. While students have the opportunity to hypothesize based on what they know, they may be required to follow procedures as they gain new skills for their experiment. Again, it’s that specific sequence of events that needs to take place to accomplish a task.
- Decomposition – the breaking down of big problems into smaller ones. When broken down into smaller parts, tasks become less daunting. With large projects, when students can solve one task at a time, they’re better able to achieve success with the overall project. Knowing how to break down big challenges into smaller, more manageable parts is really a skill. When we help students in this, they are better able to become more autonomous, knowing specifically the next step that they need to take in order to succeed. During our coding activities, Code.org’s Dance Party was a hit! As students navigated through the challenges, they realized that they were gaining the skills required to ultimately create their own dance sequence. When they got to the end, they understood the functions of all of the blocks and were really excited to create and I must say that a few even replicated their dances in small groups.
- Abstraction – the idea of using a simple model to explain more complicated systems. By taking away minute details, we are more easily able to understand the overall concept by making sense of the important parts in the model before us. I often think of this as making things more concrete before moving into the abstract. We can do this for ourselves when planning a unit. It might be daunting to understand all of what has to be taught but if we think first about the big ideas, we can then understand what is most important for students to understand and work backwards from there. When we were working on coding activities with the kindergarten students, it was amazing to see how my students were helping students to physically move around the space in order to understand direction. When you first gain a grasp of direction and understand it clearly, perhaps moving around the physical space is no longer needed as much and you can move onto other skills, as you learn.
- Pattern Recognition – helps determine probability by interpreting data & identifying patterns. Scientists are recognizing patterns and are able to more effectively predict outcomes for things like diseases and weather. Why not get students identifying patterns in everyday life and see what they might be able to make sense of in the world. In my teaching practice, I have found Math so much more meaningful to students when they are able to see and identify the concepts being taught in real life. By looking at patterns, they understand and can identify why some structures might be more stable than others and can make more accurate predictions based on data they have collected. Lightbot was one of the activities we tried with younger students and it was a great way for my students to help the younger students to see that by creating a program once, they could repeat it and it was similar to the core in a repeating pattern. It took us a minute but it was amazing when the “ah ha” moments came.
As with all things, I am growing in my understanding of computational thinking and coding. My first post was merely a conversation – and perhaps an activity – starter as we think about helping students to develop these skills. Doing or looking to do amazing things in your classroom in this area? Please share it in the comments! I would love to know more and grow with you.