https://bit.ly/3HR5iYb December 21, 2021
My BLOG@CACM post last month was on the recent CS Ed Con (see the post at https://bit.ly/3eQHYNK). I was particularly interested in the new reports and data, like the 2021 State of Computer Science Education report (https://bit.ly/333nHS5). Overall, 4.7% of U.S. high school students were 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 does not tell us about cumulative effect. I am grateful to Jeff Forbes and Leigh Ann DeLyser for helping me think through some of these questions on Twitter.
Here are two important questions:
Just recently, the CS in California effort had a webinar whose title reflected the questions in my thoughts: "Are we there yet?" (https://bit.ly/3EX8HTf). The short answer is "no," and the more detailed view is important because of the wide variation in access.
So, let's say 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:
In general, the enrollment numbers are growing slowly. Texas offers a dashboard that goes back a decade (see https://tabsoft.co/3qLIXEd). Most demographic groups have grown in CS enrollment 2%-4% over the last decade.
Maryland has much higher participation (see their dashboard at https://bit.ly/3qVkGfg). 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 reach these numbers in part because their high schools typically offer more than one CS class.
Having more classes helps with enrollment, but it is not strictly additive. Simply offering two courses does not 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 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 is 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 is a big shift, but highlights the inequities in the U.S. Only 2.3% of female high school students in Texas are taking a computer science course, but 100% take the course in the places that require it.
It is difficult to make a CS course a requirement for high school graduation. It takes a lot of teachers. As Miranda Parker's dissertation (https://bit.ly/3JLavT8) showed, even if you have teachers, there are high school principals who do not see CS as a priority, so it takes a lot of convincing. And if you are forcing students to take a course that they hate, what goals are you achieving? My research group recently read a paper (https://bit.ly/3sYWpaK) 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 a post you can access at https://bit.ly/3qOFTqX. 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 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 at https://bit.ly/3JG8Eic):
"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 is 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; see https://bit.ly/3sVPUVU.) However, if we want to see the impact of integrated computing learning experiences, we will need different measures than enrollment in CS classes.
We must 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.
©2022 ACM 0001-0782/22/4
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from email@example.com or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2022 ACM, Inc.
"We don't have to have everyone take a class in computer science... We can teach computing across the curriculum, and that is a better place to learn about applying computing in different contexts." In absolute agreement, Mark, that computing should not be siloed in a course - but the same goes for math, ethics, aesthetics, and reasoning from history, at the very least. Only basic reading and writing have evaded the trap so far. As long as subject-specific classes and exams are the normative model for curricula, everything will be forced into them.
One way out of the normative model for curricula is to reframe computing as a literacy instead of a separate subject. Nobody is surprised to see equations in physics, biology, or chemistry classes. As you say, reading and writing is expected in all classes. We have to frame computing as a useful and sometimes necessary way of supporting other-than-CS learning goals.
Displaying all 2 comments