Module One: Why Teach Coding?

Return to: ETAP 623 Spring 2020 (Zhang) | Teaching Kids to Code (When You're Not Quite Sure How to Code Yourself)

What is Coding, Anyway?

You probably already know what computer software is, since you are using software to view this website. You may also use software for things like writing documents for your students, listening to music on your computer or phone, sending and receiving emails, and other tasks that help us to do our jobs and communicate with others in the modern age. You may not think about what software is very often, but software includes all of the following examples, and more!

  • Facebook and other social media websites and mobile apps
  • All of the tools in Google Apps and Microsoft Office
  • The app you use check your email on your phone
  • The web browser where you are viewing this webpage
  • The games you have on your phone and on your computer
  • Youtube and other video websites
  • Amazon and other online stores
  • Google and other search engines

This is a screenshot of the code for a program I am creating in a programming language called Google Flutter.

Most of us use software frequently throughout the day as we go about our lives.

But what is software? Software is a set of instructions that a programmer or team of programmers put together to train your computer or device to complete certain tasks. If you go back a few decades to when the modern computer was first being developed, the first computers were designed to make mathematical calculations faster and more accurate. We're used to technology developing very rapidly now, but it took a long time to develop computers that could reliably perform useful calculations!

The first coding language that used "English-like" words to construct the instructions for computers was developed in 1952 - before that, these programs were written primarily in numbers, which very few people could do well. After that, a series of languages were developed, including FORTRAN and COBOL (both of which are still in use), all the way up through modern languages like JavaScript, Python, Ruby, and others. While each of these languages has it's own unique syntax and characteristics (along with the tasks it is best suited for), most programming languages have a lot of similarities as well.

The language we'll use in this mini-course, Scratch, was developed by MIT to help new coders understand the concepts and ideas involved in programming without having to learn complicated language syntax at the same time. It's a way to reduce the cognitive load of learning to write computer programs!

You can visit this page to learn more about the history of computer programming!

Coding Teaches Fundamental Skills

Software is undoubtedly useful, and many people enjoy building it for fun or as a career, but not all of our students are going to be computer programmers when they finish their education. So why should we teach coding to all students?

It turns out that, besides the fun of creating our own software programs, learning how to code also teaches us a set of skills that are incredibly useful, no matter what sort of work you do! Coding can help students learn:

  • How to break a big problem down into smaller, more manageable pieces
  • How to apply logic in practical situations, and understand how to make logical arguments
  • How to look at a set of instructions and make predictions about what will happen when those instructions are followed
  • How to use categories to understand how a group of things works, and to predict how unfamiliar members of that category will probably also work
  • How to use trial and observation to work through difficult problems ("errors" are not failures in coding - they're simply new problems to be solved!)
  • How to think about technology as a tool for addressing real life problems
  • How to think about themselves as digital creators instead of just consumers

Photo by Kiana Bosman on Unsplash (free public resource).

These Skills Prepare Students for Success After School

It's no secret that the technology sector is booming, with continuing growth in the number of jobs available. Many companies are having trouble hiring enough people to fill their job vacancies! Students with an interest in building strong technical skills and working in jobs within the technology sector will have a greater chance of finding a career with good growth, financial stability, and plenty of opportunity.

Beyond the technology sector, however, most jobs across all industries now require at least a basic level of digital literacy. Industries where job candidates must have strong computer skills include health care, education, financial services, manufacturing, publishing, real estate, and others. From tech companies to IT departments across divers industries, and to the administrative staff working in thousands of companies around the country, strong computer skills will be critical to student success in the future, both in higher education and in the workforce.

Encouraging Broader Tech Participation

Continuing research reveals that the workforce in the technology sector does not match the diverse makeup of our general society, and the picture has not changed much in the last several years. As Sara Harrison explained in an article for Wired magazine in October of 2019,

   The numbers are particularly stark among technical workers—the coders, engineers, and data scientists who make these companies hum. At Google and Microsoft, the share of US technical employees who are black or Latinx rose by less than a percentage point since 2014. The share of black technical workers at Apple is unchanged at 6 percent, less than half blacks’ 13 percent share of the US population.
   The companies report more progress for women. At Facebook, the technical workforce is 23 percent female, up from 15 percent in 2014; Google reports similar gains. But no company is close to parity, despite having repeatedly pledged millions to address the problem.

This is so much more than a problem of fairness and equality, though.

Our lives are shaped more than ever by the design and development of the technology we use. One has only to reflect on the impacts of social media on the presidential election of 2016 to realize that not only are our personal, day-to-day activities shaped by technology, but that the future of our countries and cultures are also being changed and determined by the technologies that we use. Representation on the teams that build technology is critical to ensuring that technical products and platforms do not become reflections and enforcers of cultural biases and inequalities.

In recent years, both Google and Amazon have had to cancel or delay use of artificial intelligence products that had learned biases during the development process based on the data they were fed in order to learn from prior hiring and content moderation patterns. Even without purposeful intention from the development team, if you give an AI program 20 years of hiring data to "train" it to make determinations about which candidates should progress through the hiring process for a company, that program will notice if most female applicants have not been offered an interview, for example, and the program will develop a bias against female candidates in the future. Without having diverse viewpoints and experiences in the rooms where technology is being designed and built, we run the very real risk of seeing cultural biases enshrined in the tools we are building to use in the future.

Beyond the risks of trusting our technology to a few select demographics, we also miss out on the technologies that could be developed to serve a wider population of people whose experiences and needs are already largely ignored and dismissed. I often tell students about a phone application called Be My Eyes. Be My Eyes links people with vision disabilities with people who have functional vision to help them navigate a world that often lacks proper accommodations for those who can't see. A person with limited or no vision can sign into the app and connect with a volunteer somewhere in the the world who has the app on their device as well. Using their phone's camera, they share video or an image of what they are trying to see, and the other use explains what they see in the image.

This app exists because Hans Jørgen Wiberg, a man with impaired vision, had the connections and resources to create it. What other technology could be developed to serve humanity if there were more people with disabilities sitting at the design table? What technology could we develop if people who've lived in poverty could offer insights on the best tools to provide for people who are struggling financially? In short, what could we build if everyone had access to the tools and the knowledge to participate in the creation of technology, instead of being stuck using tools developed by the limited population of people who can access these opportunities today?

New Curriculum Standards for the State of New York

The State of New York is in the process of developing curriculum standards regarding computer science instruction for K-12 students within the state. I had the privilege of participating in the development of these curriculum standards along with other educators and technology professionals from around the state.

The standards we wrote were then reviewed and revised by additional teams of educators and community members, subjected to public review and commenting, and then provisionally accepted by the New York Board of Regents in January of 2020.

You can read more about the standards and what they include at the New York State Education Department website.

Specifically, the training in the mini-course will help prepare you for the following proposed standards:

Impacts of Computing

  • K-2.IC.5: Explain how computer decision making is used in daily life
  • 3-5.IC.6: Identify ways to improve the accessibility and usability of a computing device or software application for the diverse needs and wants of users

Computational Thinking

Grades K-2

  • K-2.CT.1: Recognize and extend a pattern that exists in a natural or designed model
  • K-2.CT.4: Break down a larger problem into multiple smaller problems (decomposition)
  • K-2.CT.6: Follow an algorithm to complete a task and create simple algorithms
  • K-2.CT.12: Use a planning process to outline the steps taken to solve a problem or complete a task

Grades 3-5

  • 3-5.CT.1: Develop a model of a system that shows changes in output when there are changes in inputs
  • 3-5.CT.4: Decompose a problem or task into smaller and smaller parts in order to identify where there is repetition
  • 3-5.CT.6: Create and test an algorithm to complete a task
  • 3-5.CT.9: Work with variables in an algorithm or program

Grades 6-8

  • 6-8.CT.6: Design an algorithm and use it within a program
  • 6-8.CT.9: Utilize variables to store and modify data when designing or remixing a program

Digital Literacy

  • K-2.DL.4: Use a variety of digital tools and resources to create simple digital artifacts
  • 3-5.DL.4: Use a variety of digital tools and resources to create and revise multimedia digital artifacts

Other Perspectives on Teaching Coding

What computational thinking unlocks in children — rationality, reality and profundity, by Ann Gadzikowski

Why improving the digital literacy of citizens is crucial for both the digital nation and the future of work, by Shimrit Janes

Reflection and Community Building

Before you move on to the second module of this mini-course, take some time to visit the Forum Page for the course and share your reflections with me and other teachers in our community! Here are some suggested questions to get you started:

  • How do you feel about the idea of teaching your students to code in class?
  • Have you done any coding yourself?
  • What questions do you have about learning to code yourself?
  • What questions do you have about teaching your students how to code?

You can also ask questions or make suggestions to help me improve the course materials.

Course Navigation Links

Teaching Kids to Code (When You're Not Quite Sure How to Code Yourself) | Module Two: Computational Thinking and How to Teach It

Get in Touch!

Are you interested in learning more, or continuing the coding conversation with other educators? You can get in touch with me via my website at I would love to hear any feedback you have about my mini-course!