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.
CRA-E Committee
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.
After getting "tenure & full" at Rice in 1992, I turned my attention to the first-year curriculum. What I discovered is that it is fun to stuff as much as you know into the first course -- and extremely counter-productive. So after two years of doing it wrong, I spent 10 years designing, field testing, and disseminating an alternative to this nonsense.
What I discovered is that (1) being correct is irrelevant when it comes to education and (2) most CS teachers/instructors/professors are clearly on the "stuff it" side of the balance. They can't even imagine how a first semester would function if it didn't involve static void main string argv left bracket right bracket and a few semi colons. "Ideas" What are those?
So in 2001 I moved to Northeastern. They were in the process of designing a highly attractive undergraduate curriculum with a solid number of synthetic (as opposed to 'forced') dual majors that bring computational thinking to other disciplines and back. And we have a matching co-op program were co-op faculty mentor students in industry. While NU isn't in the top-20 as a research place, a lot of universities would benefit if they looked at its approach to education. [And yes, NU is far ahead of GTech as our newly recruited faculty will easily confirm :-).]
-- Matthias Felleisen
Posted by: matthias felleisen | February 15, 2008 at 10:52 AM
subject: Computing Education and the Infinite Onion
We have to be aware, that by far most software is written for embedded systems, where frequently hardware / configware / software partitioning decisions are needed in this area where FPGAs and other Reconfigurable Computing paradigms have become mainstream already years ago. Curriculum recommendationa and most curricula stubbornly ignore these inevitable skills. Our curricula fully miss the de facto IT-related job market. The time is overdue for whistle blowing. We urgently need a dual-paradigm education approach: instruction-stream-based AND data-stream-based, where data counters instead of a program counter are the basic model features.
The (von-Neumann-only) single paradigm education approach still preserving the monopoly for the spitit of the mainframe era is massively obsolete. The academic community is following the herd instinct - not changing the direction.
In the relatively near future widely used von-Neumann-only computing will become unaffordable because it is by orders of magnitude more energy-hungry than reconfigurable-computing-based approaches. The influence of a strong group calling for a change of direction is gaining momentum.
Posted by: Reiner Hartenstein | February 14, 2008 at 03:00 AM
Yay!
You call it the ever growing onion (BTW, have you looked at the sizes of onions they are selling in grocery stores these days? Our curriculum has also grown similarly!), I use the Olympic Games metaphor.
It seems that the Olympics has a whole host of legacy sports that do not have any or much meaning in modern context but we still have them (some call it tradition). They seem to be adding more and more events and never taking any out. You could probably also use a similar analogy with other things, like Grammy Award categories for example.
Anyway, I digress. Back to the agenda.
Here are some pertinent things to think about that make for compelling agents of change in the curriculum:
1) The context of computing. The biggest change in the last ten years has been that there are now more computers on any campus (at least in the US) than people. CS curricula designers would do well by reflecting on this perspective a little. Soon there will be more computers than people on this planet.
2) You are absolutely correct: Less is more. Instead of stuffing content (in individual courses) or course work requirements, try to remove them. Students, especially those who are not today's typical cs students, want to have flexibility in designing their courses of study based on their ambitions and interests. CS currcicula should be designed to give them the opportunity.
3) An average student today (in ANY discipline) spends more time on the computer than in the classroom. And yet has the foggiest idea of how or why the device functions or that they could put it to better use. Computers have become appliances. The society just uses just like they use toasters. But computers are much more than that, we say...
4) Most current CS curricula have inherent and exolicit biases (like gender biases). There is very little recognition of this even today. CS Curricula have been designed to "invite" only those who can survive the challenge. Even Dan Petersen confessed to this is a CACM column.
5) Here are some well known myths we need to get over: - CS is for nerds; CS degree leads to high stress and low job prospects (offshoring, offshoring!!); CS has no positive impact on the world; etc. We need to change this image drastically. The media is quick to report the "bad" news but it is our responsibility to make sure the media reports the "good" stuff.
6) Mark Guzdial said accurately: "While it is true that economy has forced the issue, CS curriculum has never been attractive. It is designed for the sole purpose of producing software engineers. We should aim for more outcomes from a CS curriculum." Dan's suggestion of thinking of multiple pathways through a curriculum is a step in the right direction. GeorgiaTech's Threads is a more formal version of this.
7) I asked my Philisophy colleagues if there exists such a thing as an undergrad Philosophy Curriculum. There isn't. The body of knowledge is so big that it is an intractable exercise. I then asked Peter Denning, who authored the first ever ACM curriculum document in 1968: it was 16 pages long, plus another 30 pages of appendices. The current ACM/IEEE Curriculum is over 6 volumes (each over a few hundred pages!) and it takes nearly 10 years to "revise". The onion is indeed HUGE!
Lastly, I think we should really rethink efforts to create a prescription for a common curriculum (all accreditation agencies in CS can retire henceforth :-). Our body of knowledge has grown huge. However, there is a core to Philosophy that enables all Philosophers to at least communicate at some level. I have heard Mary Shaw talk about "Durable Bones" of CS.
I applaud CRA's efforts in this endeavor and wish Andy and his committee well.
Best,
Deepak.
Posted by: Deepak Kumar | February 13, 2008 at 01:49 PM