Last month, the New York Times ran an article "The Hard Part of Computer Science? Getting Into Class" about the dramatic increase in undergraduate enrollment, and the inability of US computer science departments to keep pace with the demand. These facts aren't a surprise. The Computing Research Association report "Generation CS" described the doubling and tripling of CS undergraduate enrollment at US institutions from 2006 to 2015. American academia took notice with the 2017 National Academies report on the rapid growth of CS enrollments (see link here).
Everyone is trying to figure out how to increase capacity in undergraduate computer science education. CRA-E maintains a list of successful practices for scaling capacity in CS enrollment, many of which were funded by Google (see link here). The NYTimes article describes how CS departments are responding to the greater demand than supply in CS classes. We are seeing caps on enrollment, GPA requirements, rations, and even lotteries to allocate the scarce resource of a seat in a CS class.
We may be approaching an inflection point in computing education -- and maybe it's one we've seen before. Eric Roberts of Stanford has written a history of undergraduate CS enrollments dating back over 30 years (see link here). He suggests that the downturn in enrollment in the late 1980’s may have been the result of CS departments’ inability to manage rising CS enrollments in the early 1980’s. Then, as now, caps and limits were put into place, which sent the message that computer science wasn’t for everyone, that only elite students could succeed in computer science. Eric writes:
The imposition of GPA thresholds and other strategies to reduce enrollment led naturally to a change in how students perceived computer science. In the 1970s, students were welcomed eagerly into this new and exciting field. Around 1984, everything changed. Instead of welcoming students, departments began trying to push them away. Students got that message and concluded that they weren’t wanted. Over the next few years, the idea that computer science was competitive and unwelcoming became widespread and started to have an impact even at institutions that had not imposed limitations on the major.
Unlike the 1980’s, we now have a national movement in the US that wants "CS for All." Primary and secondary schools are increasing access to CS classes. States and school districts are mandating computer science for all students.
We are facing a capacity crunch in undergraduate CS classes, and we are not even close to CS for all. While an increasing number of US schools are offering CS classes, only a small percentage of students are taking them up on the offer. Data coming out of US states suggest that less than 5% of US high school students take any computer science, e.g., less than 1% in Georgia or Indiana (see several state reports here). What happens to undergraduate CS enrollment if we get up to 10% of high school students take computer science, and even a small percentage of those students decide they want to take post-secondary computer science classes? What if we get past 50%?
I don't have a prediction for what happens next. I don't know if we’ve ever had this kind of tension in American education. On the one hand, we have a well-funded, industry-supported effort to get CS into every primary and secondary school in the US (see Code.org). Some of those kids are going to want more CS in college or university. On the other hand, we see post-secondary schools putting the brakes on rising enrollment. Community colleges and non-traditional post-secondary education may take up some of the demand, but they probably can't grow exponentially either. Like the 1980’s, CS departments have no more resources to manage growing enrollment — but there is even more pressure than in the 1980’s to increase capacity.
The greatest loss in the growing demand for CS classes isn't that there will be a narrower path for K-12 students to become professional software developers. As the Generation CS report showed, a big chunk of the demand for seats in CS courses is coming from CS minors and from non-CS majors. More and more people are discovering that Computer Science is useful, in whatever career they pursue. Those are the people who are losing out on seats. Maybe they first saw programming in K-12 and now want some more. That’s the biggest cost of the capacity crisis. In the long run, increasing the computational literacy and sophistication across society could have even bigger impact than producing more professional programmers.
Inability to meet the demand for seats in CS classes may limit the growth in our computing labor force. It may also limit the growth of computational scientists, engineers, journalists, and teachers —- in short, a computationally literate society.