Programming is taking schools all over the world by storm. Why teach it? Does everyone need to know how to code? What are the benefits of teaching programming? And finally, how to introduce programming during the very first years of primary school? Read this article and find out for yourself. To learn how to start robotics in your school, sign up today for the next free webinar.
Challenges standing before contemporary education were never as huge as they are today. The modern world develops and changes so fast that traditional teaching methods, mostly based on direct knowledge acquisition, become more obsolete day by day. In this rapidly changing reality, we are no longer able to foresee what knowledge our students may need in the future. Civilizational milestones used to emerge every few generations. Nowadays, they appear much more often and all evidence suggests it’s going to stay this way. The omnipresence of internet and availability of smartphones is also significant, as the knowledge buried inside handbooks can be accessed all around the world at a moment’s notice. Therefore, remembering a lot of information makes little sense.
Dynamic times have produced new trends in education. For years now, schools have been trying to put greater emphasis on developing creativity, logical thinking, problem solving and cooperation. Despite the ever-changing reality, these skills do not outdate and allow people to easily adapt to new environments.
One of the promising tools often mentioned in the context of developing these competencies is learning how to code.
PROGRAMMING – WHAT DOES IT MEAN?
Programming, also known as coding, has a wide variety of applications. Programs manage our personal computers, bank servers, websites, tablets, smartphones, even washing machines and elevators. Programming is simply creating instructions for computers. The very first programs were written in machine code – a sequence of numbers in binary form (made out of digits 0 and 1), readable for processors. A sample program fragment adding one to the stored number looked like this: 0000 0010 0000 0000 0001 0000 0011 0100. Machine could easily execute this program, but for a human, even a qualified specialist, deciphering a code fragment written this way was challenging, or impossible at times.
In order to make coding more efficient, it was necessary to create programming languages: sets of commands based on words, not numbers, equipped with specific syntax unambiguously translatable into machine code. Since the first computers appeared, numerous (over 1000) languages were created and even more are invented every year. There is no “perfect,” or universal language, which could be applied everywhere, but the constantly developing technology compels us to research new, more efficient programming methods. Despite their multitude, these various languages have a lot in common – you can see it on the website 99 bottles of beer, where the same program was written in a variety of programming languages.
EVEN A CHILD CAN CODE
omputers have and continue to change the world around us, and programmers continue to be essential. But I know firsthand from studying FORTRAN that many of us get intimidated by it and we shouldn’t be. Computer programming has become far more accessible to teach and learn, and our country needs more students to learn it.
President, American Federation of Teachers
Computer programming is a skill often attributed to the selected few educated and specializing in STEM fields (Science, Technology, Engineering, and Math), who have knowledge and power to create something from scratch by using a keyboard and a compiler. They are the creators of technology. For the rest of us, commoners, programming remains black magic. Ironically, we use it every day in the form of programs, websites, or apps. But it does not have to be this way. The reality of our world demands that new generations become participants and creators of new technologies, not merely its passive users. Preparing them for this role rests on our shoulders. Fortunately, many years of research have contributed to creating numerous tools that can introduce children to coding from the very beginning of school.
Possibilities of programming used as a teaching tool were already researched in 1960s by a mathematician, Seymour Papert. Inspired by Jean Piaget’s theory of cognitive development, Papert created the first educational programming language meant to teach informatics and mathematics: Logo. Seymour Papert passed away in 2016, but his multiannual research lead to, directly or indirectly, almost all achievements gained in this field to this day. The revolutionary LEGO Mindstorms robotics set was a result of cooperation between the LEGO Group and MIT Media Lab research group, led by Papert. The name of the set was actually borrowed from Papert’s pioneering book: “Mindstorms: Children, Computers and Powerful Ideas.” His influence is also recognized by creators of the famous visual programming language Scratch. Thanks to efforts of MIT, Tufts, LEGO, and many others, coding has become a much more attainable skill for students and teaching coding can be conducted even by teachers, who have never programmed before.
Educational programming languages
Educational programming languages are usually presented in a graphic, or in a graphic & text form. To code, you choose from a limited number of instructions in the library, then snap them together in a logical fashion, thus creating a program. The process is based on the drag-and-drop method, while the instructions often look like colorful blocks with various icons, or text. This environment is visually attractive and eliminates early syntax errors, a nightmare for every beginner programmer. Certain languages also banish logical errors of the algorithm – code blocks that can’t work together, won’t fit together. Kids who haven’t even developed typing skills can create programs.
BENEFITS OF TEACHING PROGRAMMING IN SCHOOLS
Upper hand on the job market
Our policy at Facebook is literally to hire as many talented engineers as we can find. There just aren’t enough people who are trained and have these skills today.
Let’s start with arguments that are easy to measure. According to several estimates, the job market will be in need of more and more qualified ICT specialists. The digital economy develops at a pace faster than the global economy at large – seven times faster, to be precise. It is in our interest to help children and teenagers interested in coding become professionals in this field. According to the Digital Agenda for Europe published by the European Commission in 2014, by the year 2020, the European market will be in need of 900 000 ICT specialists. 
Programming know-how is not only limited to ICT field. Increasingly more jobs require coding knowledge in tasks related to creation and modifying simple websites, apps, blogs, managing online shops, etc.
Technology and computers are very much at the core of our economy going forward. To be prepared for the demands of the 21st century—and to take advantage of its opportunities—it is essential that more of our students today learn basic computer programming skills, no matter what field of work they want to pursue.
U.S. Chief Technology Officer
This concerns also completely non-technical professions. The agenda published by the European Commission estimates that at present, 90% of all jobs require at least basic informatic skills. Coincidentally, despite growing access to technology, 50% of employees have insufficient competencies in this area. Therefore, we are dealing with a significant gap in expertise. Filling this gap during the upcoming years is one of the most important tasks standing before the education today. Observations indicate that in the majority of national educational systems, this gap forms during the first 12 years of education. The competencies developed during this period do not match those required on universities, or on the job market.  
Benefits of learning how to code run much deeper than career prep. In 2012, Estonia started a pilot program aimed at teaching students programming from the first grade. However, Estonians do not intend to create a nation of computer scientists in the next twenty years, but rather educate the society, which will be able to use technology, computers and internet in a more aware and smarter way.
Mitch Resnick of MIT Media Lab seems to share this approach: “So young people today have lots of experience and lots of familiarity with interacting with new technologies, but a lot less so of creating with new technologies and expressing themselves with new technologies. It’s almost as if they can read but not write with new technologies.” 
Programming is becoming a more and more important skill, steadily turning into a basic competence. Digital literacy increasingly more frequently appears in the same category as ability to read, write and calculate. In the world, where we cannot imagine life without technology, these comparisons actually make sense.
Developmental and educational advantages
Learning to code makes kids feel empowered, creative, and confident. If we want our young women to retain these traits into adulthood, a great option is to expose them to computer programming in their youth.
Senior Vice President, Google
Not all people realize that learning coding entails many benefits, which have little to do with technology. Various research suggests that learning programming positively influences cognitive and social skills of students. Children exposed to basic computer science with rudimentary algorithmic thinking and logical constructs, exhibited advances in a variety of academic and social areas. Improvements were noted in terms of visual memory, cognitive and language skills. Another noticeably enhanced thing was meta-cognition, or learning of how to learn, which is connected to self-monitoring and independent learning.  
The term „computational thinking” was first used by Seymour Papert in 1980s. According to Jeanette Wing, prime promoter of this idea, computational thinking is a process, where a problem and its solutions are formulated in a comprehensible manner that can be executed by a computer. In simpler terms, this approach is referred to as “thinking like a computer scientist.” 
Computational thinking also promotes soft skills that aren’t often introduced into classroom. Programming teaches problem solving, decomposition (breaking large tasks into smaller sub-tasks), logical reasoning, error correction. These skills are useful in traditional STEM programs, science and engineering, but are also applicable in a variety of other fields including social sciences, or art. 
Evolution of logical thinking
Logical thinking is directly connected to understanding logical constructs. Computers complete tasks by following a certain algorithm – a predetermined set of steps, which must be executed in order to reach a certain goal. As long as the underlying steps don’t change, the computer operation is predictable. Algorithm executed on the same data will always deliver the same result.
As they created their interactive Mother’s Day cards, you could see that they were really becoming fluent with new technologies. What do I mean by fluent? I mean that they were able to start expressing themselves and to start expressing their ideas. When you become fluent with language, it means you can write an entry in your journal or tell a joke to someone or write a letter to a friend. And it’s similar with new technologies. By writing, be creating these interactive Mother’s Day cards, these kids were showing that they were really fluent with new technologies.
MIT Media Lab
Knowledge of basic programming skills creates a new creative way to express yourself. If applied accordingly, coding gives tangible results in developing children’s creativity. Like a paintbrush and canvas, which allow to express one’s thoughts and feelings in a form of a painting, programming gives the opportunity to similarly demonstrate one’s creativity by composing various pieces: animations, games, interactive images, or presentations. Training creativity is more probable, the simpler and diverse the programming language is. A great example is Scratch, the structure of which was inspired by LEGO bricks (Scratch creators worked with LEGO before, in order to design LEGO Mindstorms set). In case of bricks, children rely on intuition to connect elements available in the set. They build and create models, which inspire them to continue their work. In this context, creativity develops almost organically. Similar thing happens in Scratch, where children intuitively connect blocks to create simple programs that inspire them to construct even more. Connecting programming with other interests, such as music, film, or animation, also has a positive influence on enhancing their creativity. This method encourages a wider group of pupils to take an interest in programming and equips them with additional tools to express themselves. 
Learning on mistakes
When programming, it’s impossible to completely avoid mistakes. Some of them are frustrating – every programmer has an experience of spending several hours looking for a missing comma. But the category of errors, which are part of the creative process, is also significant. By default, programs come into existence through trial and error, they also require repetitive testing on each stage. Thanks to this method, error in programming gains an educational value; unlike other methods, error is a challenge, not a failure. Consider the words of Seymour Papert, who once wrote how some children are actually held back by traditional teaching methods, because they stigmatize errors:
The question to ask about the program is not whether it is right or wrong, but if it is fixable. If this way of looking at intellectual products were generalized to how the larger culture thinks about knowledge and its acquisition, we might all be less intimidated by our fears of ‘being wrong.’ 
Modern tools to teach programming use errors as additional instruments. In graphical languages, syntax errors are completely eliminated (hard to find any syntax in a colorful block) and instructions can be connected together only if their succession makes sense.
Developing cognitive abilities
The advantages of learning to program are comparable to benefits of bilingualism. Despite some obvious differences, learning to code is in many ways similar to learning a second language. In early childhood, mind is more susceptible to acquiring a new language, especially if the learning process is hidden behind everyday activities, suited to one’s age. Research focused on children’s abilities to learn coding shows that programming skills develop most rapidly at similar age. Teaching method is also important. It must age-appropriate, introduced as a form of entertainment and tied with other developmental processes, such as art, math, or reading.
HOW TO TEACH PROGRAMMING?
To ensure development of logical and computational thinking, learning how to program should be introduced as early as possible. However, it is a challenge for teachers, who must introduce children to programming on an understandable level.
Tools adjusted to students’ age and capabilities
Encouraging children to start coding is easier than one might think. Young students naturally accept such challenges, as long as topics and projects are presented at an appropriate level and are connected with fun age-related activities. The market offers a multitude of tools for teaching programming, all of them adjusted to various stages of development and proficiency. Yet some of them noticeably excel in their effectiveness and are often recommended by experts.
Most children are familiar with video games and gaming apps, so when they are given the opportunity to create their own game, they enthusiastically accept the challenge. There are two different approaches to using gaming in coding lessons.
In gameplay learning, the educational process is integrated with the context of the game. By completing tasks, students gain points and proceed to the next levels. Tools of this kind are applied not only in teaching programming, but also in other school subjects. There are numerous apps, which rely on a similar mechanism, such as Tynker, Alice, CodeCombat, etc.
Game design focuses on learning through coding and teaching through creating. It allows children to become game designers, programmers, creators of their own functional game, which equips them with real skills and raises their self-esteem. Inarguably, this is the most efficient and inspiring of teaching methods available today. By bringing into existence equivalents of their favorite games, children feel same as wizards. A great software for programming simple games is Scratch.
Robotics is another field able to amazingly inspire kids to learn coding. Tangible mechanisms (best if built by students themselves) make coding more real. It is much easier for students to grasp the code, when a robot executes it in a physical world, right next to them.
Seymour Papert was aware of this already in 1997:
Giving children the opportunity to program behaviors into vehicles, robots, dinosaurs and other constructs of their own design opened a new horizon onto the possibility of engagement: many children who were mildly interested in the graphics programming showed high degrees of enthusiasm in this new sphere. At the same time, many kinds of program structure that were not spontaneously picked up in the old context now seemed obvious to the children. The conclusion to be drawn was not that LEGO constructs were better objects for programming than graphics, but that variety offered more chances for more children to relate to more concepts. 
There are many educational robotics sets available on the market, but the ones that seem the most valuable were created by LEGO Education: LEGO WeDo and LEGO Mindstorms. Their effectiveness is built upon kids’ love for LEGO bricks, but they have various other advantages. Equipped with sensors and motors, these sets can be controlled with kid-friendly drag-and-drop visual programming software (WeDo sets can also be programmed in Scratch!), so they are a great tool for students aged 6 (WeDo), but also for the ones who are 99 years old (Mindstorms).
When talking about robotics, one should mention its other educational values. By operating in the physical world, robots teach physics and mechanics. By building robots with bricks, or other elements, children amend their motor skills, which seem to be recently forgotten. By selecting appropriate constructions, sensors, or themes, one can also learn biology, chemistry, history, or art. Hence, robotics is a truly interdisciplinary field.
WHERE TO START
Before introducing programming into your class, you should consider several crucial aspects, such as age of the children you’ll be working with, their programming experience, class duration and equipment you have. Another thing to bear in mind is how much time you can devote to preparation before class. Basing on these criteria, you can pick the tools most suitable to your needs. For young children (ages 6 to 8), the best choice would be robots programmable in graphical languages, which do not require fluent reading and writing skills. You can use pre-made robots (e.g. Dash and Dot), or robotics sets (LEGO Education WeDo), which provide you with more options, but require more time in class. If your students have already had their 8th birthday, you can introduce them to slightly more difficult software, such as Scratch (you can also program LEGO WeDo sets in it), or create more advanced robots with LEGO Mindstorms EV3. Before long, we will publish on our blog an in-depth article about tools for teaching robotics and programming.
Once you’ve selected your tools and prepared the equipment, it’s time to arrange the teaching curriculum. Depending on time, skill and experience of the teacher, she can create it on her own, or choose one of the lesson packages available on the market. If you want to know more about picking the right equipment for your robotics workshop, or how to start working with Scratch, try our on-line webinars. We also encourage you to familiarize yourself with our robotics and programming courses, which are based on LEGO WeDo, Scratch and LEGO Mindstorms.
Whether you want to uncover the secrets of the universe, or you just want to pursue a career in the 21st century, basic computer programming is an essential skill to learn.
Theoretical Physicist, Cosmologist, and Author
Technology development and worldwide changes related to it shift programming from after-school classes to the actual school program. This change is caused by the gap between competencies of school graduates and demands of universities and job market. At the same time, researches confirm that programming astoundingly develops soft skills, such as logical thinking, problem solving, creativity, or team work – the most valuable skills nowadays. Rapid introduction of programming into schools will be a great challenge for modern education system. Nonetheless, we shouldn’t be scared of it. Many years of research produced convenient tools, which from the very first years of school education introduce programming into classes easily and in an involving manner. Learning programming by relying on games and robots can be fun for children, and at the same time equip them with tools and skills they will be able to benefit from many years into the future.
- „Digital agenda for Europe”, Komisja Europejska, 2014.
- Valerie Barr, Chris Stephenson, „Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community?”, 2011
- Mitch Resnick, „Let’s teach kids to code”, TEDxBeaconStreet, 2012.
- Marina Umaschi Bers, Designing digital experiences for positive youth development: From playpen to playground., Oxford University Press, 2012.
- Douglas Clemens, „Young Children and Technology.”, Forum on Early Childhood Science, Mathematics, and Technology Education, 1998.
- Jeannette M. Wing, „Computational thinking benefits society” Social Issues in Computing, 2014.
- Seymour Papert, Mindstorms: Children, Computers, and Powerful Ideas, 1980.
- Beth Gardiner, „Adding Coding to the Curriculum”, NY Times.
- Mitchel Resnick, John Maloney, i in., „Scratch: Programming for All”.
- Seymour Papert, „Educational Computing: How Are We Doing?”, 1997.