These are some effective teaching strategies that ease the implementation of coding in the classroom.
"Since coding is essentially writing a set of decision-making directions, recipes in gourmet cooking are coding; choreography is coding; telling someone how to get from point A to point B is coding" (Kellinger, 2020).
Draw attention to examples from their everyday life. Kellinger (2020) shares a number of examples: repetition in dances, repetition of the chorus in songs and making decisions like what to wear. More specifically,
Line dances have repetition and could help students to understand loops.
Songs have choruses that are repeated throughout a song. This idea could help students learn how to simplify the code by making a block for the chorus so the algorithm is only written once and then insert the chorus block in different places in the song.
People make decisions every day. Deciding what to wear could help students to understand conditional statements eg. if temperature below 10°C, wear pants else wear shorts.
Unplugged coding is teaching coding without devices.
Have students "program" the teacher to move around the classroom or act out coding sequences themselves (Kellinger, 2020).
Create a flowchart of decisions people make every day to teach logical decision-making (Kellinger, 2020). Use conditionals (if/then/else) when studying other subjects like history and science (Kellinger, 2020)
Play a game of "Simon Says" to introduce Scratch coding blocks (Delacruz, 2020).
Zhang, Crabtree, Terwilliger, & Jenkins (2020) suggest starting with an exciting application like running and editing a shooting aliens game that allows students to see how easy it is to modify code.
Asking students to write a program that tells a joke (see video below) or recreates the scene from a favourite movie or TV show is also an engaging early assignment that has a low floor, high ceiling and wide walls.
Gadanidis & Floyd ( 2021) share a strategy called Use-Edit-Create that professional coders use. First, students use the code provided to see what it does, then edit the code to make changes, and finally, create a new program using the knowledge they learned from using and editing the program provided.
When learning a new language, we read before we learn to write. This applies when learning a new coding language. An important first step is to provide students with examples of code to read (Zhang et al., 2020).
Starter programs are simple programs that will run, but students must revise or add to these programs in order to complete the activity.
Steps to Success: Create a starter program. Provide students with a scratch link to that specific program. Students go to the link, sign into scratch and then press remix in order to edit the program. The remixed program will give credit to the original creator of the program on the project page.
This is the project page of a remixed project. Notice the credit given to the original creator in the top right corner.
“Live-coding” is when a teacher models how to code. According to Rubin (2013), live coding is as effective as and maybe more effective than static coding. Static coding is when a teacher shows and runs examples of coding programs for the students. It is not surprising that live coding is an effective teaching strategy because students witness the teacher thinking aloud as they create a program and see how the teacher compiles, tests, debugs, and modifies the program in order to make efficient code that works.
A program that will not run can result in students giving up. Teach students early on what to look for when troubleshooting or debugging a program (Zhang et al., 2020).
Scratch Studio provides some ready to use debugging challenges. Go to https://scratch.mit.edu/studios/475483 to find programs to assign.
Why not get your students to create a program with a bug and see if their peers can debug the program (Mak, 2014).
Before creating a program, have students write out a flowchart or pseudocode (using informal language to write out the steps) to organize their thinking. Having whiteboards available can help students design their programs (Zhang et al., 2020) before the begin writing the code.
Teaching students to create "clean, well-organized and consistently formatted code" makes the programs easier to read and maintain, and reduces errors (Zhang et al., 2020).
Provide students with inefficient code so they learn to make code more efficient. Code can be made more efficient by using subprograms (creating their own functions of blocks) and loops (Kellinger, 2020).
This Scratch code by ms-sollen (2021) was created to be inefficient. Her students used the code then edited the code to make it more efficient.
Example of Pseudocode
Example of Inefficient Code
(ms-sollen, 2021)
Be open to not knowing. Students will learn to solve their own problems by thinking for themselves and through collaboration. Just relax and celebrate the learning that unfolds in the classroom. Make mental notes of the different programs being created so you can send students to the different experts in your class.
"Inverting learner and teacher can create a collective intelligence that benefits us all" (Kellinger, 2020).
I have found that the most efficient way to view student programs and change forgotten passwords is to create a class using the teacher account in Scratch. Request a teacher's account using the link https://scratch.mit.edu/educators#teacher-accounts and then create a class that students join. You have access to all programs that students share with you.
Delacruz, S. (2020). Starting from scratch (jr.): Integrating code literacy in the primary grades. The Reading Teacher, 73(6), 805-811.
Gadanidis, G. & Floyd, L. A. (2021). Coding for Young Mathematicians, 4th edition. A WORLDiscoveries/Western University Publication.
Kellinger, J. J. (2020). Coding across the curriculum: How to integrate coding into content areas. In Handbook of Research on Literacy and Digital Technology Integration in Teacher Education (pp. 214-227). IGI Global.
Mak, J. (2014). Coding in the elementary classroom. Learning & Leading with Technology, 41(6), 26-28.
ms-sollen (2021). Make efficient geometric art. Scratch. Retrieved from https://scratch.mit.edu/projects/617054057/editor/
Rubin, M. (2013). The effectiveness of live-coding to teach introductory programming. Proceeding of the 44th ACM Technical Symposium on Computer Science Education, 651–656. ACM. https://doi.org/10.1145/2445196.2445388
Zhang, X. “Paul,” Crabtree, J. D., Terwilliger, M. G., & Jenkins, J. T. (2020). Teaching Introductory Programming from A to Z: Twenty-Six Tips from the Trenches. Journal of Information Systems Education, 31(2), 106–118.