STEM learning objectives are being included in many school, district, and national curriculum standards. As a result, educators are challenged with creating engaging and challenging instructional materials to teach computer science skills. But most teachers don’t have a technology background, much less knowledge of programming. Here’s some help. Whether you’re using ScratchJr, Scratch, HTML and CSS, or Python and the Turtle Library, the activities will be similar. Following are some basic strategies to consider when you start to design a coding unit for the classroom.
Practice Sequencing Algorithms Offline
Design a coding unit to include offline exercises. This will develop computational thinking. A starting point for instruction is to build algorithms. An algorithm is a description of the program. It uses words and symbols to sequence the instructions.
The logical order of coded instructions is critical. To build this skill, instruct students to physically act out and order a list of directions in simple, everyday language first. For example, if a programmer had to write a program for the task of putting a piece of paper into the trash, it may have the steps:
Have students act out the steps they listed to check them. Or, have a list of mixed up steps that students must unscramble to place them in the correct order.
When you design a coding unit, move from simple to more complex code slowly.
Don’t offer a complete set of instructions in code and have the students copy it and run it to see the result. This may intimidate young programmers and even make them think that coding is too difficult. Moreover, they won’t learn what each part of the code does.
Instead, write a few lines. Then test the result. The instant response will create a connection between the coding and its function.
In TechnoWhiz, primary students are introduced to ScratchJr by using one block at a time to move the character on the stage. They observe the resulting motion. Then they combine a series of blocks to create a script and see the effect. Next, they add more characters and move them, and learn to loop their actions. By the end of the project, they are able to make an interactive, one-of-a-kind racing game with a background, formatted text, and characters moving at different speeds, dancing, and talking!
Use Trial and Error
Invite students to experiment with values to figure out what works. Try a number or value. Does it need to be higher or lower? Test often to see what works.
Encourage exploration. For example, when using Python and the Turtle Library, circle(50) draws a circle with a specific size. Students can explore by changing the number to a higher value and a lower one. Or code left(90) to turn the turtle symbol. Then change the value to see what angles the turtle turns. The repeated experimentation will result in learning that can be applied in subsequent activities.
Don’t wait until mistakes are made. Early in the project, create errors with intention. Have students ‘break‘ the script, then fix it. As a result, they will recognize mistakes that may be made later in their own programming and be more likely to correct them independently.
Introduce a skill, repeat or review it, and then transfer it to another application using the program. Avoid teaching a concept in isolation. When students re-use skills in different contexts, they will accumulate their knowledge and be able to apply it in their own creative projects.
For example, in TechnoTurtle students learn to use Python to control the movement of a turtle symbol. Then they apply their skills to write scripts to draw pictures and to move the turtle through a maze. In other parts of the project, they learn about variables. Then they use this concept to create Mad Libs and to produce an interactive carnival game.
Demonstrate how a completed project might look at the beginning of a lesson. This will serve multiple purposes: students will have a clear idea of what they’re making, they will be inspired to create their own unique version, and the sample can be a coding reference guide to use if trouble shooting is needed.
In TechnoHTML, a sample web page about skateboarding sparks student interest and demonstrates the skills they will learn using HTML and CSS:
- Formatting text
- Adding images
- Making lists
- Linking to sites
Provide an Opportunity to Share
At the completion of the project, ensure that students have an authentic audience. This helps students to connect their work in the classroom to the real world and see a purpose for their efforts. Their peers are a perfect audience. Celebrate the finished projects and encourage interaction and feedback. The digital nature of programming projects makes it easier than ever to share work with classmates, family, and friends.
For example, in TechnoCode, middle school students place their collection of completed animated scenes, stories, mazes, and games into an Activity Studio to share with others.
Then they invite feedback and recommendations for improvements.
Reflect on Learning
Finally, give students an opportunity to reflect on their experiences in learning to code. In either written form in a journal or as a class discussion, ask:
- What did you like about learning to program?
- Is there anything in your project that you would like to change?
- What do you wish you knew how to do?
- Have you learned anything about yourself?
- What advice would you give to a beginner programmer?
In TechnoTales, students in grades 2 to 5 use five simple reflection responses to gain some insight into their learning.
The young programmers used Scratch to design a story with four scenes, multiple animated characters, a plot with a dilemma to solve, and a happy ending!
Design a Coding Unit
TechnoKids has elementary and middle school programming projects for Scratch Jr, Scratch, Python and the Turtle Library, and HTML. Before starting to design a coding unit of your own, try one! Visit the TechnoKids online store.