Sign In

Communications of the ACM


Finding a Path to CS for All: How Many U.S. High School Students Have Taken CS?

View as: Print Mobile App Share:
Professor Mark Guzdial

Credit: University of Michigan

My CACM Blog post last month was on the recent CS Ed Con (See post here.) I was particularly interested in the new reports and data, like the 2021 State of Computer Science Education report (see link here). Overall, 4.7% of U.S. high school students are taking computer science in 2021. The state-level dashboards are important because K-12 education differs significantly between U.S. states. Most of the state dashboards tell us current enrollment, but that doesn’t tell us about cumulative effect. I’m grateful to Jeff Forbes and Leigh Ann DeLyser for helping me think through some of these questions on Twitter.

Here are two important questions:

  1. At any time, what percentage of current U.S. high school students have already taken computer science? That’s important if we want to create a culture of computer science within schools, where it’s easy for teachers to integrate computing across the curriculum because there is a population of students who already have experience.
  2. By the time of graduation, what percentage of U.S. high school graduates have taken computer science? That’s important because, as Kirsten Baesler, the Superintendent of Public Instruction in North Dakota, said at the CS Ed Con, "There will never be a time where we use less technology." As we use more computing in our society, computing education grows in importance to maintain a democratic society.

Just recently, the CS in California effort had a webinar whose title reflected the questions in my thoughts: "Are we there yet?". The short answer is "no," and the more detailed view is important because of the wide variation in access.

So, let’s say that the CS enrollment in a given U.S. high school is 5% per year for all four years of high school. If that high school only has one CS course that counts in that statistic, the answers to those two questions range along a continuum between these two possibilities:

  • If all 5% are seniors (in their fourth and final year of high school), then only 5% of the high school student population ever takes computer science and only 5% of graduates have ever taken CS.
  • If all 5% are first-year students, then over four years, 20% of the high school population take the computer science class, but still only 5% of graduates each year have taken a CS class.

In general, the enrollment numbers are growing slowly. Texas offers a dashboard that goes back a decade (see link here). Most demographic groups have grown in CS enrollment about 2-4% over the last decade.

Maryland has much higher participation. (See their dashboard.) Their current enrollment is 12% of high school students, and 26% of their high school graduates have had at least one computer science course. Maryland can get reach these numbers in part because their high schools typically offer more than one CS class.

Having more classes helps with enrollment but it isn’t strictly additive. Simply offering two courses doesn’t automatically get you a doubling in graduates percentage. In many states, most of the students who take the second course already took the first course. For example, students who are in the Advanced Placement CS A course may have already taken the Advanced Placement CS Principles course.

If we reach 25% enrollment in each year, we might possibly be reaching 100% of all U.S. high school graduates. Let’s say that we increase enrollment in CS by 4% per decade. If we’re at 4.5% enrollment now, it will likely take at least four decades to reach CS for All.

There’s another way to dramatically increase both percentages: Require a computer science course to graduate. New York City schools, Chicago schools, and the state of Arkansas are making taking a computer science course a requirement in high school. That’s a big shift, but highlights the inequities in the United States. Only 2.3% of female high school students in Texas taking a computer science course, but 100% in the places that require it.

It’s hard to make a CS course a requirement for high school graduation. It takes a lot of teachers. As Miranda Parker’s dissertation showed, even if you have teachers, there are high school principals who don’t see CS as a priority, so it takes a lot of convincing. And if you’re forcing students to take a course that they hate, what goals are you achieving? My research group recently read a paper (see link here) by McGill, Decker, and Settle that showed how the effect of negative pre-college computing experiences was greater for female students than for male students. Get it wrong, and you can make the situation far worse in terms of long term impact.

Instead, let’s consider two deeper questions: Why is it important for all students to know computing? and Is that goal best served by taking a CS course? I gave some talks in the Fall where I offered answers to that question, and presented the argument in this post here. The vocational argument is a weak reason to teach everyone computing — not everyone needs to be a professional programmer. I offered three of the original arguments for learning to program: To support discovery, to support expression, and to support justice. That last one that is the most critical argument for all students to learn computing. As Turing laureate Peter Naur argued in 1967 (quoting from Michael Caspersen’s paper):

"Once informatics has become well established in general education, the mystery surrounding computers in many people's perceptions will vanish. This must be regarded as perhaps the most important reason for promoting the understanding of informatics. This is a necessary condition for humankind's supremacy over computers and for ensuring that their use do not become a matter for a small group of experts, but become a usual democratic matter, and thus through the democratic system will lie where it should, with all of us."

We don’t have to have everyone take a class in computer science to achieve the goals Naur is describing. We can teach computing across the curriculum, and that’s a better place to learn about applying computing in different contexts. Having many positive experiences in different (other than CS) classes is likely going to get us closer to the goals of "CS for All" —- and may be cheaper and easier to achieve than getting all students into a computer science class. (This is our driving vision for Teaspoon languages.) But if we want to see the impact of integrated computing learning experiences, we will need different measures than enrollment in CS classes.

We need to figure out how to measure what students know about computing and how they think about it, not just whether they set foot in a CS classroom. We’re measuring the latter now, and that drives efforts and policy in particular ways. At this rate, we’re not going to achieve CS for All in the U.S. for several decades. Let’s find some better measures to drive more achievable goals.

Mark Guzdial is professor of electrical engineering and computer science in the College of Engineering, and professor of information in the School of Information, of the University of Michigan.


No entries found

Sign In for Full Access
» Forgot Password? » Create an ACM Web Account