Much has been written about declining enrollments in computer science, the image of computing among secondary school students, and the depressingly small numbers of women and minorities enrolled in computer science programs. There are many opinions about the root causes of our enrollment problems and at least as many opinions about possible solutions. The reality of the problem is not in dispute, however.
Slicing the Infinite Onion
As I reflect on the past thirty years of computer science curricula and my experience as both a student and a professor, I am often struck by how little has changed. The core elements of our curricula remain centered on formal languages and theory, data structures, programming languages and compilers, operating systems and computer architecture. These are the courses I took as an undergraduate in the 1970s, and we still teach their evolutionary variants today.
Around continuous and discrete mathematics, physical and biological science and this computing core, we have added successive layers to the computing curriculum onion: graphics and human-computer interaction, artificial intelligence, mobile and embedded devices, computational geometry, networks and distributed systems, numerical and scientific algorithms, parallel computing, databases and data mining, privacy and information security, just to name a few.
As this non-exhaustive list illustrates, the computing curriculum onion has grown ever larger and more complex, with each layer derived from new discoveries and technologies. I do not believe this expansion can continue indefinitely. Asymptotics do apply – the number of students will tend (indeed, is tending toward) zero as the knowledge and degree expectations approaches infinity. This must change.
Rethinking Computing Education
I believe we must rethink our computing education approaches in some deep and fundamental ways. First, as researchers and technologists we seek to reproduce students in our technical image, failing to acknowledge that most of our students will not develop compilers, write operating systems or design computer chips. Rather, they benefit from training in logical problem solving, knowledge of computing tools and their applicability to new domains.
In short, most of our graduates solve problems using computing rather than working in core computing technologies. We must recognize and embrace the universality of computing as a problem solving process and introduce computing via technically challenging and socially relevant problem domains.
The magic hierarchy of computing – from atoms to gates to bits to in-order instruction architecture and machine language to code translation to "hello world" was an attractive and emotionally enticing technology story to previous generations. It is often esoteric and off-putting to a generation of students reared on ubiquitous computing technology.
This does not mean we should eviscerate the intellectual core of computing. Rather, we must emphasize relevance and introduce computing as a means to solve problems. Show the importance of computing to elections and voting, energy management and eco-friendly design, health care and quality of life.
Second, we struggle to accept the fact that not every student needs detailed knowledge of every computing specialization. If I were to draw a tortured analogy with the history of automobile, drivers need not understand combustion dynamics, the stiff ODE solutions underlying antilock brakes or superheterodyne radio engineering. Drivers do need to understand how to operate a car safely and recognize the high-level principles underlying that operation.
All of this suggests we should create multiple educational tracks that emphasis the disparate aspects of computing, layered atop a smaller, common core. Of course, I could be wrong – I often am.
To explore the future of computing education, CRA has chartered a new committee, CRA-E (E for education), chaired by Brown professor Andries (Andy) van Dam. The new committee seeks to understand how the broad computing community needs to move forward in order to develop principles and philosophy underlying the computing education of the future. As I noted in the press release:
I am delighted that Professor van Dam has agreed to service as the initial chair of CRA-E. Not only is Andy a distinguished and respected researcher, he is passionate about computing education, both its theory and its practice. Moreover, he has long worked to apply novel technologies to computing education.
Andy will be assembling a committee to think deeply and strategically about the future of computing education, especially at the undergraduate level. I look forward to the outcome of these explorations.