Grant Hosford
5 min readJun 12, 2017

The 5 Worst Ways to Teach Computer Science

These are exciting times for educators interested in teaching computer science (CS). We now have fantastic CS resources for all grade levels. However, CS education has only recently begun to deliver on the promise of the “Mindstorm” revolution brought about by Seymour Papert in the 1980s and there are danger signs that we might mess things up again this time.

The tricky part about expanding CS education is that only a small fraction of teachers in K-12 have been exposed to it. So it’s natural to fall back on familiar teaching practices when exploring it. Unfortunately this often means focusing energy on teaching concepts and definitions. This quickly turns a very engaging subject and creative medium into an intimidating and boring exercise.

And, of course, we are all influenced by decades of false stereotypes portraying computer science as an activity that is male, elitist and dry. If we are going to close gaps in access to CS education, we must be mindful of everything from the lessons assigned to the posters on classroom walls.

So, educators, how can we avoid killing interest in computer science this time around?

Well, let’s not do ANY of the following things and let’s learn from those who are already doing it right…

DON’T Limit who participates — Everyone can code.

  • In the past computer science was often reserved for “gifted and talented” students. This was a huge mistake that helped fuel the idea that only geniuses/nerds are programmers. Everyone benefits from studying CS.
  • Both overtly and indirectly, teachers have encouraged boys to study CS at a much higher rate than girls. It turns out girls rock at computer science but they like to solve different problems and are particularly drawn to the possibilities of creative expression with CS.
  • Pro in Action: Raymond Ealy, founder of STEAMcoders in Pasadena. STEAMcoders teaches disadvantaged and underrepresented students — many of whom had never touched a computer before taking a STEAMcoders class.

DON’T Rely on rote learning — Project-based learning is best.

  • In a perfect world no multiple choice tests about CS terms would exist. CS offers a wonderful opportunity to teach terms in context while students work on engaging projects.
  • Ultimately computer science is about creative problem solving and building things you are proud of. Only through the process of writing their own code can students appreciate the challenges and creative possibilities that CS presents.
  • Making leads to the incredibly valuable process of testing, receiving feedback, and iterating. It also teaches how to build on the work of others. These are real world skills that matter.
  • Pro in Action: Sam Patterson combines computer science with everything from puppets to robots for elementary school students.

DON’T Give solo assignments — Engineers collaborate

  • Computer science is a TEAM sport! Almost all meaningful real world software projects involve interdisciplinary teams.
  • Please help kill the stereotype of the Mountain Dew drinking basement hacker by having students work in pairs and/or teams. This is particularly important for getting girls interested in CS.
  • Pros in Action: Trish Cloud, K-5 technology teacher in North Carolina assigns group projects that range from coding a website to setting up a Minecraft server. Elementary school teacher Erica Morrill partners 5th grade students with 3rd grade students for coding projects.

DON’T Make it impersonal — CS is and should be highly engaging

  • If your students aren’t engaged on day 1 and during 70% of their time studying CS overall something is very wrong.
  • Research shows that middle school and high school students get especially engaged when allowed to solve problems that are meaningful to them. Challenge them to think of a product they’d like to improve or a personal problem they’d like to solve.
  • Embrace silliness and play. There is nothing wrong with programming an infinite loop to play a fart noise over and over. In fact, it can be amazingly effective for teaching a 6 year old about loops! (Or a 16 year old…)
  • Pro in Action: Middle school teacher Steve Isaacs uses game design, story telling and Minecraft to both teach coding and let kids build things that are deeply meaningful to them.

Don’t Teach CS in a vacuum — CS is a tool for all other subjects

  • Computer science at it’s best is a tool for other disciplines like math, science and even language arts.
  • Pro in Action: 2nd Grade teacher Nicole Green uses computer science to teach socio-emotional skills

Extra Credit DON’T: Teaching the equivalent of “Intro to CS” as a “weeder” class… STOP. OMG FOR THE LOVE OF GOD STOP!!!

  • Step back and think about how regressive this is. Students are taking the initiative to sign up for an intimidating class and then they are actively discouraged from continuing. WTF!?
  • Yes, at its higher levels CS gets very challenging but you can say that about ANY subject. We should be encouraging everyone to try CS and to persist in the face of adversity. If they eventually walk away from it, at least they will have gained valuable insights into how programmers think and what is possible with programming.
  • Pros in Action: Princeton and Harvey Mudd Professors Dan Leyzberg and Colleen Lewis have been a big part of making “Intro to CS” the most popular course on campus. Friendlier course names, grouping students by previous experience and team based assignments are a few of the tactics that make courses attractive to a broad range of students.

The computer science revolution is well underway in education. Let’s avoid the traps of the past and make it stick this time….

If you have ideas you are willing to share about effective ways to teach computer science, I’d love to hear them!

Send me a note on twitter (@codesparkceo) or post a comment below.

We can all learn together. 😁