While we often think of technology learning as the exclusive domain of screens and devices, there are also many other ways to introduce and develop the logic necessary to successfully build with technology. Below are 6 Off-Screen ways to teach coding logic to kids.
1. Sandwich Exercise
One of the fundamentals of technology is to internalize that programming is the process of giving a series of instructions to the computer to execute. While humans are great at generalizing instructions or inferring context based on tone, emphasis and other indicators, computers are much more precise. The computer will do exactly what you tell it to even if it’s not quite what you intended. In fact, this has led some to describe a computer as the dumbest invention ever made. While this description is technically true, our preference instead is to consider a computer as a massive blank slate or canvas that developers can create their masterpiece with. Once students can understand this lesson, they realize that the sky is really the limit in terms of what they can accomplish with lines of codes. From there, they begin to gain familiarity with the different strengths and weaknesses of the programming languages - Ruby on Rails, Java, Python or C++. One of the best ways to demonstrate this concept is through the sandwich exercise in which students outline the steps required to make a sandwich. The instructions are then given to a parent to execute exactly how the student describes. Once a student sees that the literal following of instructions leads to unintended consequences
, they realize they must be more precise when creating their programs.
2. Rubix Cube
As students move beyond a basic understanding of how programming is used to give instructions to the computer, it is important to progress beyond this baseline to explore the implementation of additional features and functionality. This is where it becomes important to develop opportunities to practice with logic and conditional statements. Within this area of development, kids can start to predict what will happen in several scenarios of a given block of code. One of the best ways to gain practice with this is solving a Rubix Cube. Because of the three-dimensional nature of the visualization along with the multi-variable sequences that can result from twists and turns of the Rubix Cube, students can begin to see how changes to one part of the cube can impact other parts of the cube. And they can learn that in order to get all the sides to line up they have to consider what is happening in parts of the Rubix Cube that they are not necessarily looking directly at.
3. Board Games
Throughout childhood, students are exposed to several different board games. Whether it is Scattegories, CandyLand or Monopoly, kids love playing board games. As they learn the rules of the games, they are essentially learning the boundary conditions in pursuing of achieving a desired outcome - winning! Once the rules are learned, they can begin to develop and implement winning strategies to take advantage of their knowledge of the rules - application. For example, in Monopoly, they might learn that they don’t want to purchase every property they land on right away in order to preserve cash for properties that may be more desirable for their long term landlord empire - algorithm. In a similar fashion, there are certain programming languages that are better suited to accomplishing certain outcomes. By getting practice in the strategies for success in several different board games, students will gain the knowledge that while winning and losing is the generalizable framework for all games; the property purchase strategy may lead to success in Monopoly but will be inapplicable for CandyLand.
While puzzles are often considered to be an opportunity to kill some time depending on complexity (the number of pieces, the illustration and the size of the pieces), they are also a great way for kids to gain an understanding of how different blocks of code come together to create an outcome. Like puzzles, there may be a block of code that outlines in HTML & CSS how the footer will appear on a webpage. By getting familiarity with how different pieces come together to display an outcome (webpage), kids can quickly learn how to take functions and libraries and import them into different projects they are working on. Puzzles are great at showing that there are several different pieces that all play an important role in the final picture that is displayed. Whether it is a corner piece, an edge piece or an internal piece; they all contribute to the final image. In addition, kids can also gain an understanding that sometimes a puzzle piece that they thought would work a certain place actually doesn’t fit. Within a development environment, this will also be the case. At times, a developer will try to import a previously developed function into a new project and it just won’t work because perhaps they have placed the function in the wrong area or it isn’t easily portable.
When learning to code, there is often an idea of functionality that one would like to implement. However, the best laid plans do not always work out. In a similar manner, mazes have all sorts of different paths that one can go down as they try to move in and out of the maze. Depending on the complexity of the maze, students may have to do down several different paths before they are able to successfully exit. As they reach each dead end, they are developing a series of conditional statements or rules about which paths can enable them to go further and which paths will lead to failure. Over time, they can put together all of the conditional statements to finally solve the maze. By completing the maze, they have learned how to implement logic real-time as well as how to continue to iterate in order to solve a problem in the most efficient and effective manner. This is really no different than the iterative process that developers go through when creating elegant solutions to difficult problems.
Since coding requires students to think beyond their current blocks of code, one of the best ways to get kids to understand the multi-dimensional nature of coding is through playing chess. Chess requires students to think several steps ahead when considering their moves in order to beat their opponent. In this process, they are also using predictions for how their opponent may respond to a move. In addition, because the different pieces have different movement and capabilities; they get good exposure to the concept of functions and libraries within the code base of a language. One of the key limitations of chess is that you can’t take an existing piece and modify its movement or capabilities to do something different to produce the desired outcome. Whereas, in coding, if we go back to the concept of a blank slate; you can repurpose existing code to have it perform a new functionality based on modifications. However, for outlining the fundamental considerations, chess is an excellent game to develop students logic skills.
While there are many hardware and software platforms that can be utilized to teach coding on screen and devices, there are many offline ways to get these concepts across to students as well.