The French American Academy started offering coding classes to its Elementary and Middle School students in 2018. As the years have passed, coding has been integrated into our STEM curriculum for younger and younger grades, and this year, for the first time, even our kindergarten students are learning the basics of analytical thinking and problem solving in coding class. Coding classes are an opportunity to engage all learning styles and ability levels, activating multiple skill sets and establishing the base for continuously developing digital literacy.
Coding in K and Elementary Classes
The essence of coding on any level involves thinking of a plan to achieve some objective, writing a program that conforms to that plan, then executing and testing the program. This thinking process is both abstract and deeply logical; building an understanding of how to “write” a program obliges children to break down problems into a series of ordered, manageable steps. The skills involved in coding naturally overlap with mathematics, science, spatial reasoning, and other problem solving subjects.
Starting from the Ground Up
Perhaps surprisingly, introducing coding to young children of 5 or 6 years does not involve screens. In fact, during the first few months, classes require only rudimentary tools and supplies: paper and a pencil, and our own bodies. In our kindergarten class, students are first instructed to think of steps they can take to go in a logical direction from one point to another. They work to “encode” their path by drawing directional arrows on a grid, and they execute this code on their own and with partners. Every step in coding builds on the last, so after students have mastered a basic pattern, complexity is gradually introduced. They may be told to avoid certain obstacles in their path or execute a program with a minimum or maximum of steps.
These initial coding lessons are concrete and manageable for children, and students enjoy the movement, experimentation, and teamwork that’s involved. Compelling students to use spatial reasoning to plot a path helps to strengthen their concepts of left and right at a crucial point in their development. As an added bonus, language is naturally an important component of these lessons: using directional words and action verbs in such an applied context helps non-native French speakers progress naturally.
After a few months of learning terminology, writing and executing codes, and dealing with increasingly complex instructions, students are ready to practice their coding skills using Bee-bots, which are small programmable robots. Now instead of writing code for oneself or one’s friends, students must learn to program a miniature robot: an entity that can only follow their directions and cannot think for itself. They do so by learning how to enter directions on the Beebot’s keypad, then they are tasked with executing their own and others’ codes. The challenges become gradually more complex; eventually lessons involve operating the Beebots on a grid designed to look like a city with multiple possible obstacles and destinations. Students must work together to plan and execute routes for their Beebots. These lessons are rich in skill building: analytical thinking and planning, problem solving, logic, directionality and orienteering, communication, collaboration, and cooperation are all tasked in order to create successful programs. It is also an iterative process: students naturally make mistakes, which requires them to revisit their code and locate and correct the error, experimenting and improving at each stage. This teaches resilience along with problem solving.
Elementary Coding with Scratch Jr and Scratch
Students learn to enact basic coding concepts “in real life” using Beebots. Once these concepts have been instilled, our coding teacher introduces the application Scratch Jr to transition students into the virtual realm. This application, which is used on a tablet, is designed for children who are 5-7 years old; they don’t need to be able to read or do math in order to operate it. Students encode and execute instructions within the app, and as the weeks go by they assimilate more functions and integrate more complexity into their programming. Each step must be intentionally planned, tested, and modified to comply with their end goal and constraints: indeed, students are enacting the scientific process with every repetition. However, they discover that they have a great deal of freedom within the restrictions that are set, and they are encouraged to make their own choices and express their creativity while designing these simple programs.
In our upper elementary grades, students graduate to using Scratch on computers. Building on their knowledge from years spent using Scratch Jr, they are able to quickly adapt to the more complex coding options available to them. While using this program, students reinvest knowledge from a wide range of academic subjects, for example:
- Math. Designing a simple animation requires them to understand the basics of plotting points on a grid, and they must properly time a character’s movement for visual appeal.
- Art and Graphic Design. Students are given some parameters for the layout of their background, but they have the freedom to choose the size, placement, and look of various components.
- Language and keyboarding. These programs often require typing dialog for characters, which may appear in speech bubbles but could also be recorded and integrated into the sound design of the animation.
- Problem solving. The coding instructor is always present to help students find tools they might need, but it is up to them to test and reconfigure their program to achieve the desired outcome.
Unlocking Coding’s Potential in Upper Grades
Having mastered the basics of the Scratch program in elementary school, our middle school students are ready to approach coding projects of greater depth and purpose. One group has been working with their coding instructor to create an animated FAA logo, in which each letter is composed of hexagons. The students were given guidelines about the dimensions of their hexagons and letters, but they were free to choose their preferred colors and forms. While the final result has coherence and some uniformity, each student’s contribution is unique and shines through.
Other students have been working on simple game design, creating an interactive racquetball court. Students must program and execute the rules of the game, and they must also integrate the scoring and the feedback the game gives to its players. Designing the animation, in which the ball bounces from each player’s “racquet” to the wall and back, requires understanding of trajectories and angles. The result, after hours of planning, coding, and testing, is a real game that students can be proud to share.
In an upcoming project, our young coders will use real-life materials to create a model of a maze, which they will then encode using Scratch. The true test will come at the end of the project, when one person using the model will direct another person using the program to complete the maze. These sorts of activities, in which students must collaborate as they play the roles of both the designer and the user, foster empathy and strong communication skills. They call on students to ground their understanding in a physical object while engaging in high-level abstract thinking as they encode the program. Projects like this represent the culmination of years of practice solving problems, thinking logically, and working collaboratively.
An Essential Skill for the Future
Learning the basics of coding from a young age serves the students at FAA well as they move into higher education and their professional careers. Perhaps the true potential of coding lessons, though, lies in the way that they are compelled to engage in a structured and iterative problem-solving process, using persistence and collaboration to achieve their objectives. In these lessons, our students form fresh cognitive connections as they apply their previous knowledge to new situations; in turn, the skills they pick up in coding classes will be reinvested throughout their studies, making for an even richer and more rewarding academic experience.