Should Math be a Prerequisite for Programming?


In her LinuxCon Europe talk, “The Set of Programmers: How Math Restricts Us,” Carol Smith, Education Partnership Manager at GitHub, got us thinking about how math requirements impact our ability to bring more people into the field of computer programming. 

Carol kicked off her talk with a story about how she traveled to New Zealand with two friends, Boris and Natasha (not their real names), and learned that Boris has agoraphobia, which causes him extreme anxiety in open spaces. New Zealand, as it turns out, is full of wide open spaces. During one hike, Boris really struggled with crossing the long bridge across a gully. The more he told himself he could do it, the harder it was. He felt like he should be able to do this and felt like he was the only person who couldn’t do it. A lot of people get this feeling when they try to do math. They feel like everyone else can do math, and the more they think this, the more they feel like they are the only person who can’t do math.

Last fall, after working in various technology jobs for 10 years, Carol decided to finally see if she enjoyed programming. She began the process to enroll in a local community college with regular classes and an instructor for when she had questions. As part of the process, she had to take a reading and math assessment. She did really well on the english skills portion, but didn’t do as well in math and was required to take entry level math, Math 101 – Elementary Algebra. However, the programming classes all required Math 103. So, she needed to pass two math courses before she could even enroll in the programming classes, so she needed to spend a year doing math before she could take a programming class. Needless to say, she didn’t enroll. She decided to do this talk, instead.

A few data points:

  • 29% of Americans report they are “not good at math”
  • 21% of men say they’re “not good at math”
  • 37% of women say they are “not good at math”
  • 39% of Americans 18-24 years old report not being good at math
  • 1/3 of Americans say they’d rather clean the bathroom than do a math problem

These are all measures of perception, and since our perception of our skills influence what we decide to do, it can be more important in influencing behavior than how we do on aptitude test. 

Carol breaks the issue of math and programming into three areas. In this case, “Math” refers to what students learn beyond arithmetic. 

1. Separate math and programming

Carol says, “The ways people are getting into this field aren’t separating math and programming. Our pipeline of people coming into the field is composed of people who overcame the math barriers or were comfortable with math.” People are coming in from academia with degrees in computer science, which required quite a bit of math. Another option is to be self-taught using programming books or tutorials, but most of these also include plenty of math with the Head First series being on exception. Coding bootcamps are one other path into the industry, and they are doing the best job of separating math from computer science, but it’s less common than academia.

However, Carol talks about some skills that are important, like logic skills and language. Recursion and loops are also fundamental concepts that can be introduced before math.

2. Separate programming and computer science

Carol says that we can also separate the career paths between computer scientists and programmers and give people the ability to major in one or the other. The Wikipedia definitions of the two careers do a pretty good job of articulating the differences.

  • “A computer scientist is a scientist who has acquired the knowledge of computer science, the study of the theoretical foundations of information and computation and their application.”
  • “A computer programmer […] is a person who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software […] A programmer’s primary computer language (Assembly, COBOL, C, C++, C#, Java, Lisp, Python, etc.) is often prefixed to these titles…”

3. Separate those fields in computer science that require math skills from those that don’t

Carol points out that there are areas within computer science that do require math, but others don’t, and people can tailor their experience based on different areas.

  • Cryptography – requires math
  • Video game physics – requires math
  • UI design – can introduce math later for the few things that need it
  • Databases – can introduce math later for the few things that need it

Carol says, “We may be unwittingly excluding people we’d like to get into our field without realizing it.” In short, think about poor Boris when you are writing textbooks or tutorials and writing job requirements.