Computers are a part of almost every industry and are changing the way we live. Equally, this is true in education because computers and technology are used to deliver curriculum and offer opportunities for students to interact with technology. To better understand the role of computing in the world, we need to dive deeper and educate students on the basics of computer science.
Most students are taught only how to use computer and web-based software, rather than creating ways for them to use computational thinking and computer programming to solve authentic problems. One dimension of computer science that can easily be integrated into the curriculum is teaching students to code.
This chapter will provide preservice teachers with an overview of coding and how it is being taught in the K-12 setting.
a set of steps that are used to complete a task
breaking problems down into smaller workable parts
coding with a programming language where the instructions are represented in blocks
a language that a computer can use to complete a task or a set of instructions
a problem solving process; typically broken down into decomposition, pattern recognition, abstraction, and algorithm design
the process of testing, finding, and solving errors in computer programs
two students sit at one computer, one is the “navigator” and one is the “driver”
informal or simplified programming language that can be used to represent algorithms outside the computing environment
a coding lesson that does not require a computer
Coding is simply a language that a computer can use to complete a task. It is a set of instructions given to a computer. “Coding is a new literacy. To thrive in tomorrow’s society, young people must learn to design, create, and express themselves with digital technologies” (Berkman Klein Center, 2014). According to the Institute of Museum and Library Services (2014), 65 percent of scientists with advanced degrees started being interested in the sciences started before middle school. Adams and Mowers (2013) also indicate that coding skills are needed at all stages in life because it is a global language and more commonly used than spoken languages like English, Chinese or Spanish.
Research shows a growing need for coding in the job market. Computing jobs are growing at twice the national average while only 2.4 percent of college graduates with a degree in Computer Science (Adams & Mowers, 2013). As a result of this growing need, coding is now recognized as a critical literacy skill in the CS field, which people use to solve problems. Even outside of the CS field, many new jobs require some knowledge of computing and/or coding. Coding requires complex thinking and has evolved from solely technical skills to organize and communicate ideas (New Media Consortium, 2015). States such as Texas and Florida are allowing coding classes to count as a foreign language credit in high school (Zinth, 2015).
Offering computational thinking strategies with coding as part of the curriculum in elementary schools, K-5 students will have the exposure to 21st century skills that enable them to be successful in their future careers. In addition, research indicates that coding provides cognitive advantages to learning.“Learning a system of signs, symbols, and rules to communicate - that is, language study - improves thinking by challenging the brain to recognize, negotiate meaning and master different language patterns.” (Adams & Mower, 2013).
Coding involves problem-solving, perseverance, collaboration, mathematical logic, and reasoning skills. Could anyone argue that these are not skills that we want for all students? It can be easy to get caught up in the common barriers of why not to code, such as lack of time, lack of knowledge, or lack of resources. But coding can be integrated into any curriculum and the learning can take place along with the students. There are many low or no-cost solutions to teaching students to code.
Coding touches on most of the ISTE (International Society for Technology in Education) Standards for Students (ISTE, 2016). There are seven ISTE standards for students of a digital world. They are Empowered Learner, Digital Citizen, Knowledge Constructor, Innovative Designer, Global Collaborator, Computational Thinker, and Creative Communicator. These standards have been adopted across the country and world. Coding is a powerful tool we can use to cover more than just ISTE standards. Sylvia Duckworth, a world renown sketchnoter, summed up the ten reasons to teach coding from Aspinall (2015) perfectly.
When students code they become empowered learners . When a program is being developed, students set goals for program completion, develop strategies to “debug” or find mistakes in their program, and reflect on their work in order to make their program better by adding additional code. They also are able to share and receive feedback on their work. During the coding process students troubleshoot and use the knowledge gained to explore other emerging technologies as a result of understanding the logic behind how code is organized and executed.
Many times during a coding project students need assistance to troubleshoot their program. Students will turn to other programs or online documentation to assist them with their problem and program completion. In this case, students must respect the intellectual property rights of others by giving proper credit. This is following the “Digital Golden Rule” and demonstrating digital citizenship.
Many students will code an app in order to solve a real-world problem. They will use research strategies and evaluate the accuracy of the information they acquire. Soon after, they will develop an idea and use their coding to seek a solution. These students are knowledge constructors. They are creating meaningful learning experiences for themselves.
As students create their programs they take into account the objectives of their product and work on expressing their ideas clearly and effectively. These coders go through the design process for generating ideas a number of times, test their theories, and refine their prototypes. As they accomplish their task, they use a variety of digital objects to create games, visualizations, models, or simulations. These students are blossoming into creative communicators and innovative designers .
The last ISTE standard coding meets is the one that is most obvious. That is the standard of computational thinker. When a child codes they are using algorithmic thinking, breaking problems down into smaller workable parts, and becoming adept at developing sequences of detailed steps to create and test their work. As students code, they begin to understand how computers execute their programs and what is involved in the production of the apps and they use daily.
While the idea of teaching coding may seem overwhelming and complex, basic coding lessons do not even need to start with a computer. Coding lessons can progress from simple to complex. A lesson that does not require a computer is often termed “unplugged” because computer technology is not needed. A basic unplugged lesson might include teaching the students the vocabulary of coding. For example, writing an algorithm is one of the fundamental concepts in coding. An algorithm is a set of steps that are used to complete a task. Using the “unplugged” philosophy, students can write algorithms of their routine at school to learn this concept.
Write an algorithm that consists of the steps you take to get ready each morning. What do you do first, second, and third? You can write this algorithm as if you were talking to another person, no need to use any “code” for now!
When teaching “plugged” coding, computer availability might be a concern. To reduce the number of computers needed, a strategy that is considered a best practice when coding is the use of paired programming, which “is a proven method for both enhancing learning and writing better code” (Kraus and Prottsman, 2017). Two students sit at one computer, one is the “navigator” and one is the “driver.” Then, at some point during the activity the two roles switch, which allows students experience with both roles and hands-on computer time.
Try a basic Blockly app.
For many coding games or apps, once the blocks are arranged, a program can be run to execute various commands. Many block type programs that are free are available to educators.
Now try Blockly again. This time you will be navigating your way through a maze.
As you can see with this previous challenge, lessons or time writing code can be spread out over multiple class periods with the recognition that some students might advance faster than others and multiple levels of programming should be available.
One resource that allows for this progression is Code.Org. Code.Org not only offers free training for educators but also plugged and unplugged lessons that educators can take and immediately use in the classroom. The free, web-based platform is where students can utilize Blockly to progress from simple to more complex coding concepts and teachers can track student proficiency and progress. It is designed with multiple courses that cater to different student age groups and reading proficiencies that help teach coding at a developmentally appropriate level.
Visit Scratch and recreate some of these subject-based projects.
Around the World Interactive Geography
Oregon Trail Interactive Diary
Animal Cell Parts
Mad Libs Story
In addition to the resources you have explored in this chapter, there is an ever-growing list of tools and resources a teacher can use to aide in the integration of coding across the curriculum. Much of what is currently being used in education focuses on teaching students coding concepts in a block-based coding environment, like Blockly. However, some tools give students the option of learning simple coding languages or even beginning with block-based coding and moving to a coding language.
Adams, A. & Mowers, H. (2013, October 3). Should coding be the "new foreign language" requirement? [Blog post]. Retrieved from http://www.edutopia.org/blog/coding-new-foreign-language-requirement-helen-mowers
Aspinall, B. (2015, May 26). 10 reasons to teach coding [Blog post]. Retrieved from http://brianaspinall.com/10-reasons-to-teach-coding-sketchnote-by-sylviaduckworth/
Berkman Klein Center. (2014, July 10). 21st century literacy: New initiative makes the case that learning to code is for everyone [Blog post]. Retrieved from https://cyber.harvard.edu/node/95731
Institute of Museums and Library Services. (2014, June). Talking points: Museums, libraries, and makerspaces. Retrieved from https://www.imls.gov/assets/1/AssetManager/ Makerspaces.pdf
International Society for Technology in Education. (n.d.). ISTE standards for students. Retrieved from http://www.iste.org/standards/for-students
New Media Consortium. (2015). NMC horizon report: 2015 K-12 edition. Retrieved from http://cdn.nmc.org/media/2015-nmc-horizon-report-k12-EN.pdf
Shrock, K. (2017, August 12). Computational and design thinking. Retrieved from http://www.schrockguide.net/computational-thinking.html
Zinth, J. (2015, April). Computer science in high school graduation requirements. Retrieved from https://www.ecs.org/clearinghouse/01/18/29/11829.pdf