Coding in the Classroom

Why You Should Care About Teaching Computer Science

Author Ryan Somma
A book for anyone teaching computer science, from elementary school teachers and coding club coaches to parents looking for some guidance.

Computer science opens more doors for today's youth than any other discipline - which is why Coding in the Classroom is your key to unlocking students' future potential. Author Ryan Somma untangles the current state of CS education standards; describes the cognitive, academic, and professional benefits of learning CS; and provides numerous strategies to promote computational thinking and get kids coding!

Whether you're a teacher, an after-school coach, or a parent seeking accessible ways to boost your kid's computer savvy, Coding in the Classroom is here to help. With quick-start programming strategies, scaffolded exercises for every grade level, and ideas for designing CS events that promote student achievement, this book is a rock-solid roadmap to CS integration from a wide variety of on-ramps. You'll learn:

  • tips and resources for teaching programming concepts via in-class activities and games, without a computer
  • development environments that make coding and sharing web apps a breeze
  • lesson plans for the software lifecycle process and techniques for facilitating long-term projects
  • ways to craft interdisciplinary units that bridge CS and computational thinking with other content areas

  • Coding in the Classroom does more than make CS less formidable - it makes it more fun! From learning computational thinking via board games to building their own websites, students are offered a variety of entry points for acquiring the skills they need to succeed in the 21st-century workforce.

    Moreover, Somma understands how schools operate - and he's got your back. You'll be empowered to advocate for the value of implementing CS across the curriculum, get stakeholder buy-in, and build the supportive, equitable coding community that your school deserves.
    Ryan Somma has been a software developer for over 25 years and currently works in Laboratory Information Management Systems. He spent 10 years developing mission-critical aviation logistics applications for the US Coast Guard and five years developing professional development applications for teachers at the Association for Supervision and Curriculum Development. A volunteer educator, Somma is interested in synthesizing various ideas from the technical and educational worlds, drawing on his own experience as an educator, as well as contemporary education research.
    Introduction: An Age of Wonders

    Chapter 1: Making Sense of the Computer Science Standards
    Chapter 2: The Many Benefits of Computer Science Education
    Chapter 3: Computer Science History
    Chapter 4: Computational Thinking Gamified and Unplugged
    Chapter 5: Diving into Web Development
    Chapter 6: Intentional Development Environments
    Chapter 7: Scaffolded Code Exercises
    Chapter 8: Self-Directed Project-Based Learning
    Chapter 9: Coaching Your Coders
    Chapter 10: Networking a Coding Community

    Afterword
    INTRODUCTION

    K–12 computer science teachers are amazing innovators. They have to be. They work in a subject that was historically only taught to students at colleges and universities. Many K–12 public schools have only recognized computer science education as crucial to student success in the last decade. Computer science teachers don’t have decades of established lesson plans and teaching exercises to draw from. Only in recent years have they even acquired standards to guide them. As a result, computer science teachers have had to rely on ad hoc networks of peers and communities in an ongoing conversation to share tips and techniques for teaching the subject.
     
    This book seeks to contribute to that conversation with novel perspectives on computer science, exercises that integrate well with other subjects, and a programming environment with an extremely low bar for entry. The challenge of writing a book on teaching computer science standards in a public classroom or after school club is that so many different standards are available to choose from. Different states in the United States and countries around the world use distinct sets of standards and integrate their facets into the curriculum in various ways. Additionally, the rapid pace of technological change and the introduction of new innovations in computer science mean that today’s cutting edge classroom exercise might quickly become tomorrow’s dated curiosity. Fortunately, computer science has a strong, persistent foundation of general principles that are as true today as they were a century ago. Concepts like abstraction, decomposition, and problem-solving strategies for highly complex systems are applicable to each new technological advance and invention. Helping our students master these techniques empowers them to adapt to technological change and rise to future challenges.
     
    Who This Book Is For
    If you’re teaching students about computers, computational thinking, or writing code, this book is for you. It provides you with numerous techniques and strategies to support you in your teaching. Elementary school teachers will find ideas for incorporating computer science facets into their existing lesson plans in ways that provide novel insights while complementing existing literacy, science, social studies, and mathematics lessons. Secondary school computer science teachers will learn about quick and accessible ways to get students writing code, engaging with programming exercises, and developing long term projects. Teachers and school administrators will learn strategies for supporting students in computer science, building school community around the subject, and proving the value of their computer science program.
     
    This book is also for enthusiasts who coach coders in many different contexts. Technology coaches who are only afforded limited sessions to work with students will find techniques to get kids writing code in moments on any computer. Students will be able to take that knowledge home or to a public library computer to continue learning independently. Volunteers hosting after-school code clubs or summer camps will find games, engaging exercises, and strategies for student projects that will gift young minds with a sense of accomplishment. Parents looking for accessible ways to improve their kids’ computer literacy will also learn about computers and programming alongside their children.
     
    A Generalized Approach to Computer Science
    In recent years, organizations like the Computer Science Teachers Association (CSTA) have developed generalized computer science standards to guide teaching. Many states have adopted these standards into public classrooms. Some have even integrated the standards into existing subjects like math and science. We’re seeing computer science rapidly rise in prominence in our public education institutions.
     
    Although computer science is increasingly being taught in K–12 education, how Standards are applied can still differ greatly from school to school. For example, many schools might teach the same topics and use the same tools, but they might introduce them at very different grade levels. One school might introduce Scratch programming at the elementary level, and another might introduce it to high schoolers. To account for this disparity, techniques and topics covered in this book are generalized, so many of them can apply to multiple grade levels. We’ll also learn how to use board games to teach computational thinking principles: this is a technique students can benefit from whether they’re a child in kindergarten or a senior in high school.
     
    Resources can vary dramatically from school to school. One school might provide a laptop to each student in a classroom, and another might only provide a shared computer lab to the entire student body. To address this discrepancy, the programming environments and exercises this book provides are as inexpensive as possible. In most cases, they’re free so you can optimize your program’s return on investment. They’re also accessible, so students can easily get up and running and continue programming on almost any computer.
     
    Plenty of programming environments currently compete for mindshare in the education market. Some, like Scratch and Construct, are appealing for the way they provide easy-to-use interfaces that allow students to drag and drop control logic onto their projects to create animations and games. Unfortunately, to share their creations with others, students need friends and family to install software on their computers to run the games and animations. Some of these programs, like Scratch, are free; others can cost hundreds of dollars. This book’s examples and exercises use the JavaScript programming language. JavaScript is the most widely used language in web development; almost every website online uses it. It’s also one of the few programming languages students can start coding with almost instantly, using any computer with a web browser. When a student publishes a program written in JavaScript online, anyone in the world can run it and learn from it.
     
    This book also offers ways to increase your computer science program’s visibility to make it more prominent and prove its value to your community. Schools have integrated computer science into their curriculums to disparate degrees. Many schools still offer computer science only as an advanced placement course, reserving the subject for only college-bound students. For this reason, teaching the subject often means having to advocate for it as well. Through showcasing student projects, using programs to bring students into the decision-making process for your organization’s IT policies, providing professional services to students, and bringing student families into activities, this book provides numerous ways you can increase your computer science program’s profile and highlight its value in your school community.
     
    How This Book Is Organized
    This book progresses from a general overview of computer science standards to the benefits of learning computer science. It provides an outline of the computer as a system and then advances into more detailed specifics of programming. Then it presents strategies for supporting students as they take on the challenges of learning the subject. A summary of each chapter follows:
     
    Chapter 1: Making Sense of the Computer Science Standards   Covers the current state of computer science standards and their different features, and focuses on standards that various organizations have produced. You’ll explore what publications are best for specific situations and examine a few generalized categories for easily keeping track of the standards. The chapter also touches on the advocacy dimension for implementing a computer science program and the importance of stakeholder buy-in for success.
     
    Chapter 2: The Many Benefits of Computer Science Education   Explains an important aspect of advocating for your school’s computer science program by communicating the many benefits that come from learning it. You’ll learn about the benefits students can experience in their cognitive, academic, and professional lives from learning computer science.
     
    Chapter 3: Computer Science History   Takes a deep dive into the computer as a system, from the interface, through high-level and low-level code, to the electronics, and many innovations that go into our modern computing devices. You’ll descend through each layer of innovation, which is tied to the time period in which it was developed and the many people who worked with it. Teaching the modern computer as layers of innovation over decades also teaches the legacy of diverse individuals iteratively making computers more accessible over time.
     
    Chapter 4: Computational Thinking Gamified and Unplugged   Provides information on how to teach many computer programming concepts without using computers. Through in-class activities and board games, you’ll explore how your students are already using computational thinking in their daily lives.
     
    Chapter 5: Diving into Web Development   Introduces a programming environment where any student with access to a computer can start executing code within moments. These tools, available in any web browser, enable students to learn from and experiment with the client code running any website.
     
    Chapter 6: Intentional Development Environments   Covers several development environments that make coding web applications easier for your students. These environments allow them to develop their own applications and let them share their creations with friends and family.
     
    Chapter 7: Scaffolded Code Exercises   Reviews code exercises that encompass multiple computer science standards in a single, extended activity. The activity starts as a simple scaffolding and iteratively adds layers of complexity to build student understanding.
     
    Chapter 8: Self-Directed Project-Based Learning   Explains the software development process that has your students work on long-term projects of a larger scope. Students present a final product at an event that promotes their personal achievement and your computer science program.
     
    Chapter 9: Coaching Your Coders   Describes strategies, techniques, and software you can use to support your students. Included are generalized troubleshooting approaches to overcome the common challenges of crafting code as well as the personal challenges programmers often experience and how your students can cope with them.
     
    Chapter 10: Networking a Coding Community   Focuses on community building exercises and programs you can enact at your school. These programs will further foster student academic success while building social bonds between educators, students, and their families in your school community.
     
    Computers have great potential for promoting equitable access to high-quality education in our global society. Teaching students to think computationally and making them fluent in information technologies empowers them for success in the 21st century. With this book, you’ll find ways to prove the effectiveness of teaching computer science and advocate for it to take equal place alongside science, history, English, math, and foreign languages in our schools.
    "The book is easy to read while being full of useful, practical suggestions . . . If you’re a teacher, administrator, or parent looking to add some high tech fun to your lessons, Coding in the Classroom is highly recommended."
    —InMotion Hosting

    About

    A book for anyone teaching computer science, from elementary school teachers and coding club coaches to parents looking for some guidance.

    Computer science opens more doors for today's youth than any other discipline - which is why Coding in the Classroom is your key to unlocking students' future potential. Author Ryan Somma untangles the current state of CS education standards; describes the cognitive, academic, and professional benefits of learning CS; and provides numerous strategies to promote computational thinking and get kids coding!

    Whether you're a teacher, an after-school coach, or a parent seeking accessible ways to boost your kid's computer savvy, Coding in the Classroom is here to help. With quick-start programming strategies, scaffolded exercises for every grade level, and ideas for designing CS events that promote student achievement, this book is a rock-solid roadmap to CS integration from a wide variety of on-ramps. You'll learn:

  • tips and resources for teaching programming concepts via in-class activities and games, without a computer
  • development environments that make coding and sharing web apps a breeze
  • lesson plans for the software lifecycle process and techniques for facilitating long-term projects
  • ways to craft interdisciplinary units that bridge CS and computational thinking with other content areas

  • Coding in the Classroom does more than make CS less formidable - it makes it more fun! From learning computational thinking via board games to building their own websites, students are offered a variety of entry points for acquiring the skills they need to succeed in the 21st-century workforce.

    Moreover, Somma understands how schools operate - and he's got your back. You'll be empowered to advocate for the value of implementing CS across the curriculum, get stakeholder buy-in, and build the supportive, equitable coding community that your school deserves.

    Author

    Ryan Somma has been a software developer for over 25 years and currently works in Laboratory Information Management Systems. He spent 10 years developing mission-critical aviation logistics applications for the US Coast Guard and five years developing professional development applications for teachers at the Association for Supervision and Curriculum Development. A volunteer educator, Somma is interested in synthesizing various ideas from the technical and educational worlds, drawing on his own experience as an educator, as well as contemporary education research.

    Table of Contents

    Introduction: An Age of Wonders

    Chapter 1: Making Sense of the Computer Science Standards
    Chapter 2: The Many Benefits of Computer Science Education
    Chapter 3: Computer Science History
    Chapter 4: Computational Thinking Gamified and Unplugged
    Chapter 5: Diving into Web Development
    Chapter 6: Intentional Development Environments
    Chapter 7: Scaffolded Code Exercises
    Chapter 8: Self-Directed Project-Based Learning
    Chapter 9: Coaching Your Coders
    Chapter 10: Networking a Coding Community

    Afterword

    Excerpt

    INTRODUCTION

    K–12 computer science teachers are amazing innovators. They have to be. They work in a subject that was historically only taught to students at colleges and universities. Many K–12 public schools have only recognized computer science education as crucial to student success in the last decade. Computer science teachers don’t have decades of established lesson plans and teaching exercises to draw from. Only in recent years have they even acquired standards to guide them. As a result, computer science teachers have had to rely on ad hoc networks of peers and communities in an ongoing conversation to share tips and techniques for teaching the subject.
     
    This book seeks to contribute to that conversation with novel perspectives on computer science, exercises that integrate well with other subjects, and a programming environment with an extremely low bar for entry. The challenge of writing a book on teaching computer science standards in a public classroom or after school club is that so many different standards are available to choose from. Different states in the United States and countries around the world use distinct sets of standards and integrate their facets into the curriculum in various ways. Additionally, the rapid pace of technological change and the introduction of new innovations in computer science mean that today’s cutting edge classroom exercise might quickly become tomorrow’s dated curiosity. Fortunately, computer science has a strong, persistent foundation of general principles that are as true today as they were a century ago. Concepts like abstraction, decomposition, and problem-solving strategies for highly complex systems are applicable to each new technological advance and invention. Helping our students master these techniques empowers them to adapt to technological change and rise to future challenges.
     
    Who This Book Is For
    If you’re teaching students about computers, computational thinking, or writing code, this book is for you. It provides you with numerous techniques and strategies to support you in your teaching. Elementary school teachers will find ideas for incorporating computer science facets into their existing lesson plans in ways that provide novel insights while complementing existing literacy, science, social studies, and mathematics lessons. Secondary school computer science teachers will learn about quick and accessible ways to get students writing code, engaging with programming exercises, and developing long term projects. Teachers and school administrators will learn strategies for supporting students in computer science, building school community around the subject, and proving the value of their computer science program.
     
    This book is also for enthusiasts who coach coders in many different contexts. Technology coaches who are only afforded limited sessions to work with students will find techniques to get kids writing code in moments on any computer. Students will be able to take that knowledge home or to a public library computer to continue learning independently. Volunteers hosting after-school code clubs or summer camps will find games, engaging exercises, and strategies for student projects that will gift young minds with a sense of accomplishment. Parents looking for accessible ways to improve their kids’ computer literacy will also learn about computers and programming alongside their children.
     
    A Generalized Approach to Computer Science
    In recent years, organizations like the Computer Science Teachers Association (CSTA) have developed generalized computer science standards to guide teaching. Many states have adopted these standards into public classrooms. Some have even integrated the standards into existing subjects like math and science. We’re seeing computer science rapidly rise in prominence in our public education institutions.
     
    Although computer science is increasingly being taught in K–12 education, how Standards are applied can still differ greatly from school to school. For example, many schools might teach the same topics and use the same tools, but they might introduce them at very different grade levels. One school might introduce Scratch programming at the elementary level, and another might introduce it to high schoolers. To account for this disparity, techniques and topics covered in this book are generalized, so many of them can apply to multiple grade levels. We’ll also learn how to use board games to teach computational thinking principles: this is a technique students can benefit from whether they’re a child in kindergarten or a senior in high school.
     
    Resources can vary dramatically from school to school. One school might provide a laptop to each student in a classroom, and another might only provide a shared computer lab to the entire student body. To address this discrepancy, the programming environments and exercises this book provides are as inexpensive as possible. In most cases, they’re free so you can optimize your program’s return on investment. They’re also accessible, so students can easily get up and running and continue programming on almost any computer.
     
    Plenty of programming environments currently compete for mindshare in the education market. Some, like Scratch and Construct, are appealing for the way they provide easy-to-use interfaces that allow students to drag and drop control logic onto their projects to create animations and games. Unfortunately, to share their creations with others, students need friends and family to install software on their computers to run the games and animations. Some of these programs, like Scratch, are free; others can cost hundreds of dollars. This book’s examples and exercises use the JavaScript programming language. JavaScript is the most widely used language in web development; almost every website online uses it. It’s also one of the few programming languages students can start coding with almost instantly, using any computer with a web browser. When a student publishes a program written in JavaScript online, anyone in the world can run it and learn from it.
     
    This book also offers ways to increase your computer science program’s visibility to make it more prominent and prove its value to your community. Schools have integrated computer science into their curriculums to disparate degrees. Many schools still offer computer science only as an advanced placement course, reserving the subject for only college-bound students. For this reason, teaching the subject often means having to advocate for it as well. Through showcasing student projects, using programs to bring students into the decision-making process for your organization’s IT policies, providing professional services to students, and bringing student families into activities, this book provides numerous ways you can increase your computer science program’s profile and highlight its value in your school community.
     
    How This Book Is Organized
    This book progresses from a general overview of computer science standards to the benefits of learning computer science. It provides an outline of the computer as a system and then advances into more detailed specifics of programming. Then it presents strategies for supporting students as they take on the challenges of learning the subject. A summary of each chapter follows:
     
    Chapter 1: Making Sense of the Computer Science Standards   Covers the current state of computer science standards and their different features, and focuses on standards that various organizations have produced. You’ll explore what publications are best for specific situations and examine a few generalized categories for easily keeping track of the standards. The chapter also touches on the advocacy dimension for implementing a computer science program and the importance of stakeholder buy-in for success.
     
    Chapter 2: The Many Benefits of Computer Science Education   Explains an important aspect of advocating for your school’s computer science program by communicating the many benefits that come from learning it. You’ll learn about the benefits students can experience in their cognitive, academic, and professional lives from learning computer science.
     
    Chapter 3: Computer Science History   Takes a deep dive into the computer as a system, from the interface, through high-level and low-level code, to the electronics, and many innovations that go into our modern computing devices. You’ll descend through each layer of innovation, which is tied to the time period in which it was developed and the many people who worked with it. Teaching the modern computer as layers of innovation over decades also teaches the legacy of diverse individuals iteratively making computers more accessible over time.
     
    Chapter 4: Computational Thinking Gamified and Unplugged   Provides information on how to teach many computer programming concepts without using computers. Through in-class activities and board games, you’ll explore how your students are already using computational thinking in their daily lives.
     
    Chapter 5: Diving into Web Development   Introduces a programming environment where any student with access to a computer can start executing code within moments. These tools, available in any web browser, enable students to learn from and experiment with the client code running any website.
     
    Chapter 6: Intentional Development Environments   Covers several development environments that make coding web applications easier for your students. These environments allow them to develop their own applications and let them share their creations with friends and family.
     
    Chapter 7: Scaffolded Code Exercises   Reviews code exercises that encompass multiple computer science standards in a single, extended activity. The activity starts as a simple scaffolding and iteratively adds layers of complexity to build student understanding.
     
    Chapter 8: Self-Directed Project-Based Learning   Explains the software development process that has your students work on long-term projects of a larger scope. Students present a final product at an event that promotes their personal achievement and your computer science program.
     
    Chapter 9: Coaching Your Coders   Describes strategies, techniques, and software you can use to support your students. Included are generalized troubleshooting approaches to overcome the common challenges of crafting code as well as the personal challenges programmers often experience and how your students can cope with them.
     
    Chapter 10: Networking a Coding Community   Focuses on community building exercises and programs you can enact at your school. These programs will further foster student academic success while building social bonds between educators, students, and their families in your school community.
     
    Computers have great potential for promoting equitable access to high-quality education in our global society. Teaching students to think computationally and making them fluent in information technologies empowers them for success in the 21st century. With this book, you’ll find ways to prove the effectiveness of teaching computer science and advocate for it to take equal place alongside science, history, English, math, and foreign languages in our schools.

    Praise

    "The book is easy to read while being full of useful, practical suggestions . . . If you’re a teacher, administrator, or parent looking to add some high tech fun to your lessons, Coding in the Classroom is highly recommended."
    —InMotion Hosting

    Books for Native American Heritage Month

    In celebration of Native American Heritage Month this November, Penguin Random House Education is highlighting books that detail the history of Native Americans, and stories that explore Native American culture and experiences. Browse our collections here: Native American Creators Native American History & Culture

    Read more

    2024 Middle and High School Collections

    The Penguin Random House Education Middle School and High School Digital Collections feature outstanding fiction and nonfiction from the children’s, adult, DK, and Grupo Editorial divisions, as well as publishers distributed by Penguin Random House. Peruse online or download these valuable resources to discover great books in specific topic areas such as: English Language Arts,

    Read more

    PRH Education High School Collections

    All reading communities should contain protected time for the sake of reading. Independent reading practices emphasize the process of making meaning through reading, not an end product. The school culture (teachers, administration, etc.) should affirm this daily practice time as inherently important instructional time for all readers. (NCTE, 2019)   The Penguin Random House High

    Read more

    PRH Education Translanguaging Collections

    Translanguaging is a communicative practice of bilinguals and multilinguals, that is, it is a practice whereby bilinguals and multilinguals use their entire linguistic repertoire to communicate and make meaning (García, 2009; García, Ibarra Johnson, & Seltzer, 2017)   It is through that lens that we have partnered with teacher educators and bilingual education experts, Drs.

    Read more