My work with broadening participation in computing has taken me to some interesting places. Recently, I had the pleasure of visiting Johannesburg, South Africa, to present at a STEAM-focused teacher professional development conference focused on innovation.
During one of my sessions, I discussed how to encourage students to be self-starters when tackling programming projects and unlock their potential to collaborate and be better problem solvers. We took time to explore the computational-thinking process and why this is a pivotal concept to embed into our teaching across grade bands and subject areas.
While the session received positive feedback, a few educators pulled me aside after and talked about not having access to the same resources that we had in the States.
This conversation reminded me of one that I had with an educator from Nairobi, Kenya, last year. He told me that he uses chalk and chalkboard to teach and that due to not having easy access to computers, none of his students know how to code. A solution to both issues may be to provide low-tech approaches to computing education. As entrepreneur Alex Wright eloquently stated, “Computer science is no more about computers than astronomy is about telescopes.”
While high-tech resources are necessary and useful for practical applications and advanced topics, integrating low-tech approaches can improve critical-thinking skills and foster a solid foundation for students to explore computing pathways. Every student will not have access to a computer, a tablet, or the internet, and low-tech approaches to teaching computer science (CS) can ensure that those with limited access to technology can explore programming fundamentals.
3 WAYS TO TEACH CS Without computers
1. Unplugged programming. In my experience with students, unplugged activities are a great place to start learning about CS! CS Unplugged leans in on teaching the subject by using games and puzzles and houses a plethora of these activities that teach loops, conditionals, binary numbers, sorting algorithms, etc.
One of my favorite lessons is My Robotic Friends. In groups, students are allowed to model and create algorithms using cups and paper cutouts. Then, they collaborate in pairs to write programs and take turns being the “robots,” executing the programs, and discussing bugs or challenges they encounter during the process.
Another unplugged lesson that builds a formative understanding of the importance of correct syntax in various programming languages is Marching Orders. Students participate in a drawing exercise where they follow instructions to re-create an image without being allowed to ask questions. A huge emphasis is placed on communication and the role of precise instructions in programming.
2. Conversation-rich word problems. To teach and have students explore the computational-thinking process, computers are rarely needed. In my experience, one of the best ways to explore this concept is to provide conversation-rich word problems that students can discuss in groups.
My go-to example for this is the 1001 Pennies prompt, which asks students to find the sum of various coins laid across a table in a particular pattern. This seemingly easy prompt turns out to be a very difficult question due to the amount of coins and challenge finding the pattern. When working to find a solution, I have students intentionally focus on decomposing the problem, finding patterns, thinking abstractly, and developing algorithms to achieve a solution.
Students ultimately understand the need for modulus commands, conditionals, loops, and arrays and how all of these basic CS concepts can make this problem much easier to solve.
3. Coding simulations. When students have a few computing basics together, I have found that they really enjoy tangible or kinesthetic-coding simulations.
Teachers can create these low-tech activities in a variety of ways. For example, when working with topics such as flowcharts, students can create their algorithms with conditional statements embedded and then have their classmates execute commands by following the predefined set of rules for a given input.
Another fun way of having students perform coding simulations is kinesthetic-programming cards. An activity that I really like calls for students to be given a stack of cards displaying different control structures, logical and relational operators, data types, and variables. Students are then tasked with working together to move around the room and arrange the cards to correctly simulate the solution to a programming prompt. The prompt can be as simple as asking students to print all of the even numbers between 1 and 20.
While these are only some of the ways to tackle CS in a low-tech way, it’s my hope that you can see the possibilities of this approach. Many of the ideas presented have the added benefit of helping to foster an inclusive and supportive learning environment that encourages creativity and exploration. Although it may seem counterintuitive to do so, teaching CS without computers can help students develop a solid foundation in computing and awaken their interest in the subject.