June 15, 2024

U.S. Computer Science Malaise

There’s a debate going on now among U.S. computer science researchers and educators, about whether the U.S. as a nation is serious about maintaining its lead in computer science. We have been the envy of the world, drawing most of the worlds’ best and brightest in the field to our country, and laying the foundations of a huge industry that has fostered wealth and national power. But there is a growing sense within the field that all of this may be changing. This sense of malaise is a common topic around faculty water coolers across the country, and in speeches by industry figures like Bill Gates and Vint Cerf.

Whatever the cause – and more on that below – there two main symptoms. First is a sharp decrease in funding for computer science research, especially in strategic areas such as cybersecurity. For example, DARPA, the Defense Department research agency that funded the early Internet and other breakthroughs, has cut its support for university computer science research by more than 40% in the last three years, and has redirected the remaining funding toward short-term advanced development efforts. Corporate research is not picking up the slack.

The second symptom, which in my view is more worrisome, is the sharp decrease in the number of students majoring in computer science. One reputable survey found a 60% drop in the last four years. One would have expected a drop after the dotcom crash – computer science enrollments have historically tracked industry business cycles – but this is a big drop! (At Princeton, we’ve been working hard to make our program more compelling, so we have seen a much smaller decrease.)

All this despite fundamentals that seem sound. Our research ideas seem as strong as ever (though research is inherently a hit-and-miss affair), and the job market for our graduates is still very strong, though not as overheated as a few years ago. Our curricula aren’t perfect but are better than ever. So what’s the problem?

The consensus seems to be that computer science has gotten a bad rap as a haven for antisocial, twinkie-fed nerds who spend their nights alone in cubicles wordlessly writing code, and their days snoring and drooling on office couches. Who would want to be one of them? Those of us in the field know that this stereotype is silly; that computer scientists do many things beyond coding; that we work in groups and like to have fun; and that nowadays computer science plays a role in almost every field of human endeavor.

Proposed remedies abound, most of them attempts to show people who computer scientists really are and what we really do. Stereotypes take a long time to overcome, but there’s no better time than the present to get started.

UPDATE (July 28): My colleagues Sanjeev Arora and Bernard Chazelle have a thoughtful essay on this issue in the August issue of Communications of the ACM.


  1. Harry Stein says

    One more followup. I have personally spoken to over twenty kids who either wanted to enroll in engineering/computer science (but didn’t) or were already enrolled and considering switching disciplines or very concerned about their futures. With no exception, they stated that there is great risk in losing their jobs to offshore outsourcing or H-1B abuse.

    It shocks me that you didn’t even mention this as a root cause of enrollment decline.

    http://earthlink.com.com/Brain+drain+in+techs+future/2100-1008_3-5299249.html says it all:

    [quote]As for why U.S. students aren’t going after doctorates as they used to, one need merely follow the money, suggests Eric Weinstein, who has analyzed the issue of high-tech labor for the National Bureau of Economic Research.

    [quote]He says Americans are shunning technology-related doctoral programs because of low wages and poor career prospects. Graduate students in science and engineering can spend five to 10 years earning their doctorates, all the time scraping by on $15,000 to $20,000 annually, he said. Many who earn their degree then end up in postdoctorate research fellowships, which may mean a salary of $30,000.

    [quote]According to Weinstein, the NSF’s own data and analysis indicate that wages for graduate students and doctoratal students have been kept artificially low through immigration rules that allowed for a deliberate “glutting” of the scientific labor force. He estimates that a true market wage for graduate students who teach or do research would be $40,000 to $60,000 per year, while many newly minted doctorates should be earning as much as $100,000.

    [quote]Weinstein isn’t alone in suspecting financial reasons behind Americans’ aversion to doctoral programs. A 2000 study from the nonprofit National Research Council found disincentives to pursuing advanced degrees in computer science for U.S. students, at least in the short term. The study concluded that someone taking five years to earn a doctorate in computer science–without having to pay tuition or fees–would need about 50 years to catch up in career earnings with someone who goes to work immediately with a bachelor’s degree in the field.

    *the end*

  2. Harry Stein says

    Are you kidding me? You actually think the consensus thinks enrollment is down because of the ‘anti-social/nerd” rap? Give me a break. Have you tried asking people why didn’t enroll? The overwhelming consensus is that greedy American corporations have given away high-technology jobs by (a) offshore outsourcing (third party or captive centers in India and China), (b) L-1 and H-1B visa abuse to import workers under the shill guise of skills shortage. Both of these are for cheaper labor. An H-1B is tethered to their green card sponsor for about six or seven years, makes 15-30% less than their American counterpart according to four credible studies, and works about 50-55 hours/week. Kids aren’t stupid: they watch Lou Dobbs and they read articles by many respected authors and organizations showing there is no skills shortage — rather corps seek cheaper labor and have turned their back on them.. Read IEEE Ronil Hira’s book and he will educate you.

    Your shortsighted “consensus” analysis strikes me as being shill — that is, perhaps you are beholden to corporations and special-interest groups promoting importing and exporting cheaper labor — and thus are motivated to give such a lame analysis.

    Shame on you for shaming the name of Princeton.

  3. Join: http://www.icq.com/groups/group_details.php?gid=12035163
    or some other group to organization against the Fascist thugs. I’m not talking unions.

    The rules are made by those that take control of their situation.

  4. Justin Howe says

    Programmers vs. CS Majors & the Geek Stereotype:

    First, let me applaud the posters for providing rational, reasonable discussions on the topic at hand. It’s really refreshing to see a healthy debate about a heated, often emotional topic such as this. Anyway here’s my 2×10^-2 dollars worth.

    Programming is not CS. I know this has been stated before, but as a computer science/mathematics major at Portland State, I know first hand that programming is simply the means to an end for computer scientists.

    If you want to focus your attention on programming, go buy some books or check some out at the library. CS is for those who not only love to program computers, but who love to solve challenging, creative and fun problems with logic, synthetic languages and mathematics.

    Personally, I would characterize the computer scientist as one who walked into a computer lab for the first time at age 5 or so, and gaped in awe at the wonderful machines set before them.

    So many opportunities, so much to learn about! If you’re doing math 3 grades ahead of your peers, you’re likely to be a future computer scientist. If you have dreams of actually existing inside of a computer, riding the data bus and playing with bits and bytes, you’re a future computer scientist.

    If all you want to do is sit there and write code for some gaggle of suits for the rest of your life, then go ahead and get your A+ or MSCE and skip the CS program. Otherwise, enjoy your folly and dig deeper into your chosen profession. And about the argument that states that hackers usually don’t populate CS as much as they do the non-college crowd: FALSE. I consider myself a stage beta larval hacker (even after 12 years programming). Consider luminaries such as Linus Torvalds or The Much Revered One, Donald P. Knuth. They went to a university and studied their craft in-depth, and they made the best of what they love to do.

    Look, what I’m saying is this: If you love to think and solve problems creatively, especially those involving logic, math, and games, immerse yourself in Computer Science. I have. If you just want the big figures and codemonkey jobs on huge teams and faceless corporate suits telling you what to do, go for it. It’s your call. Think for yourself and exercise your intellect and creativity, that’s all I can say.

    Geeks? Sure. We’re mostly geeks. So what? What did you expect, fashionistas or binge-drinking gorillas who all the girls love to date and who are invited to all the hippest parties?

    Antisocial? Maybe. Hackers come in all flavors and sizes.
    What some would see as antisocial, others would see as a creative drive that is not concerned with the illogical, irrational “social” popularity contest that is “Real Life ™”. I love getting lost in my own thoughts and logic processes without interference from external stimuli in the “Real World”.

    That’s just how I am. I wear a pocket protector sometimes, I haul at least half a dozen books around with me wherever I go, I read books on the way to class, I’ve got taped-up glasses and dress however the hell I want because I can. I spend my Friday nights hacking C and Perl and reading.
    I have (and use frequently) the New Testament by K & R, I have an IQ of near 140. I was born a geek and I’ll die that way.

    I just don’t care about the opinions of others, unless those opinions are truly credible and reasonable. My world does not revolve around standard issues that plague a “normal” person’s life.

    I am a geek, and like hundreds, nay thousands more like myself, I am just fine as I am. Us geeks are the wave of the future, folks. Get over it and accept it.

    Oh, and for those of you who want a Ph. D, you’d better have a real good reason before hitting grad school. I’m going to grab one because I salivate at the thought of being able to learn graduate-level computer/logic theory courses while researching things like virtual reality and membrane/DNA computing. You want a good job? Look for work in academia or as a research scientist for an interesting R&D lab, such as Los Alamos.

    BTW, I’m an INT[JP] for those who care.

  5. I have a different take on this. I think the problem is that CS doesn’t offer students any sense of romance. It really is an incredibly nerdy, difficult field to study, and I think students see it as being strenuous without being rewarding.

    Most fields, including the other sciences, have some aura of romance behind them. Physics has its great, classical experiments. History has its battles and heroes. Anthropology has travel and adventure. But CS does not have any of those things. CS has a bunch of nerds sitting in a room, pounding away at keyboards in front of monitors. Or, some of the time, one lone nerd, sequestered in his office, scribbling on paper or blackboards trying to figure out an algorithm.

    I’m not saying that image is accurate, but I think it’s what people envision when they think “Computer Science.” And, in fact, (this is the part I’m going to get flamed for), I don’t think the image is as far off as some people here do. During my time in college, I noticed a few trends which I would say apply to 95% of CS “citizenry” (faculty, grad students, undergrads), which detract from it garnering a romantic image:

    The aversion to natural light. The main work area for grad/faculty in our building gets zero natural light. The undergraduate lab has windows, but the blinds were usually shut.
    The poor nutrition and physical condition of the citizenry. There were very few students who exercised regularly or seemed concious about eating in a healthy way.
    The rejection of social norms. This was not 95%, but more like 60%. There were some students that seemed to get along well and play with people of other majors. But a disappointingly large number would only socialize with other CS students, and often only a select group of those. CS majors can be very cliquish.
    The lack of a visual aesthetic. It always seemed to me the workspaces, offices, hallways, everything about the CS dept was devoid of the aesthetic consciousness that lingers in most other fields. Even PowerPoint slides would have minimal, if any, decoration. Admittedly, CS people (myself especially included) are not usually good artists, and I don’t think anyone expects frescos on the hallway ceilings. The problem here was more that many CS people seem to have a sort of distaste for the visual makeup that the rest of the academic/professional world uses everywhere. They see it as unnecessary and a waste of time, and there’s a sense that those who do prefer visually appealing material are effete and too superficial to handle the real challenges in the field.

    Last night, while thinking about this issue, I asked some friends I was with what they felt the biggest problems were. The one they all agreed on was that CS students seemed very exclusive, in that CS geeks typically have an air of elitism about their abilities. I was surprised by that, because I didn’t think that was how it was at all, but thinking about it more, I can understand where they are coming from. The subject matter we deal with in the field is often so esoteric and distant from real-world connections that it can be hard to explain. So we don’t. We don’t try to explain what pipelining is or how a spin lock works, because we inevitably bore our audience. But the result is this sense that we are all exclusive about our knowledge.

    What this all boils down to is the image of nerdy kids who are off in their own intellectual playground sitting and typing for hours on end in a dark room doing things they don’t care to talk about with anyone else. It’s hard to think of something to study which would be less romantic than that. I think the issue that really puts the nail in the coffin for most people is this: even if you are working socially while solving a problem, in the end your main counterpart is a computer.

    One of the friends I was talking with told me she had once considered taking a course in cryptography, because she said it sounded like it could be fun and interesting at the same time. No doubt she was thinking about breaking codes and government secrets and covert operations and the like. But she realized on the first day of class that it was not going to be fun; it was going to be a long, arduous semester slogging through textbooks and math and minutiae. So she dropped it, and I can’t blame her.

    My point is, I don’t think it’s purely a matter of promotion. I think computer science depts need to do some soul searching about what their requirements are, and what they really want their students learning. Are so many “building block” courses really important? Should we make it easier for undergrads to do research? Should we connect students with tangible, real world projects in some way?

    And I think as long as the core material remains so esoteric, we’ll be lucky to see another influx of pupils. Of course, there is a cycle at work here – the people that CS attracts quickly become the people who CS represents, which only perpetuates the problem. So if there is going to be a change in the way CS markets itself, the CS community needs to be prepared for the fact that it might change as well. If we start to market work in areas students can more easily connect with, we need to be very conscious that we are going to attract a new kind of individual. Without being open and receptive to that, I don’t think such a campaign can work.

  6. This is a great discussion and the long posts indicate that everyone has very strong feelings due to their personal experiences. Same here. Apologies for the long post ahead of time (which is also a bit scattered in terms of my thoughts). I am an attorney with a CS undergraduate degree and a CS masters degree. I find this topic very interesting, but have not been following general discussions on it for the past several years. My CS degrees were acquired in the mid to late 90s and I do wonder how the discipline is developing.

    I agree strongly with many of the posters who note that CS does not address well many of the needs or wants of various members of a college student body (except for those with high scholarly hopes in the field). When I took CS, the CS programs were best suited for those who wanted to move up and become scholars in difficult computing areas – not for those who wanted to learn about technology as a profession.

    For those who want to “learn how to use a computer or technology,” introductory CS courses did not address this need which turned off students taking introductory courses from the major. Such students also tended to be reminded by members of the CS community that CS was a scholarly science, not a trade school and would therefore not teach you how to work Windows well (which is actually a very good skill!). As such, introductory CS courses tended to teach a programming language as a building block for subsequent courses such as data structures, algorithms, etc. which would not be useful to students who would not be interested in programming but perhaps other aspects of technology. Perhaps networking would be a more useful introductory course, for example, given importance of understanding networks in everyday life.

    For those who wanted to learn “CS” to get a professional job, traditional CS did not teach the actual “trade” of software programming or engineering well. I would go further and say many young well respected professors, especially on the more theoretical side of things, tended to be terrible programmers – but great scholars. Despite the funding of CS projects by industry, my feel was that the professors were nevertheless not very tapped into industry nor did they use or were familiar with the industry’s own new commercial technology developments as well as they should have been. As such, one could come out of a traditional CS program having less practical skills (including as it related to actual programming) than an economics major with a part time job at the student computer clusters as the web site developer or an IT admnistrator. My own experience is that I graduated Summar Cum Laude and Phi Beta Kappa with a B.A. in computer science from a top liberal arts college – knowing lots about search algorithms and NP hard problems but not knowing anything about APIs or correct techniques for programming (I knew how to write short little segments of programs for quick sort) – this completely embarassed me when I interviewed for a consulting job with a heavy programming aspect with a top NY consulting firm right out of college and had to submit a sample of my programming work (I had none – and had not been encouraged strongly enough to take summar internship positions at technology companies in hopes of beefing up my practical skills).

    I do note that there is certainly a trend of computer professors becoming more entrepeneurial – starting their own start-ups, etc, and I think that is GREAT. It may encourage them to teach things that may be closer to the applied technologies in industry.

    I had further observed that sometimes the real computer “geeks” in college would not necessarily be the CS majors. The hacks could do what they wanted to on their Linux systems without learning about quick sort or Tomasulo’s algorithm and CS classes did not teach what the hacks knew how to do.

    I’d be curious to learn how many actual IT professionals and programmers actually have CS degrees (as opposed to taking profesisonal IT classes, etc.). I also found it extremely curious that only in CS could one without a CS background from undergrad apply and be accepted into significant masters and PhD programs, competing with those who did have CS backgrounds. It has also never been clear to me that students are clear what the difference is between CS and CE.

    There is a difference between CS as a scholarly endeavor and CS as preparation for a professional career and I think this is where the disclipline needs to clearly state its goals. If CS wants to continue to train the “high end” as some have characterized it here, then perhaps that it has been generally doing the right thing and the decrease in enrollment is probably a result of a better understanding by the general public of what CS is all about. During the tech boom, people were likely enrolling in CS not really understanding that it was training for the “high end” and therefore not getting the right training for their goals (e.g., “lower end”). As such, maybe it is not right to compare the drop in enrollment to those levels during tech boom times.

    If CS wants to speak to a broader range of people, including the “lower-end” who want to get jobs in programming and engineering, then it needs to drastically reconsider its approach (i.e., professors need to be pretty good programmers themselves!). My own feel is that software engineering (perhaps the “low-end”) as a discipline has not been a focus of the CS community (the “high end”) until recently which is why software development has a reputation of being undisciplined but development of innovative CS concepts continues to thrive.

    Finally, I will say, that even in the law profession, law firms recognize that first year lawyers have very little skills and need time to develop as practicing lawyers. Despite being a “professional” school, law school does not teach the practice of law. So in a sense, this is similar to CS programs and perhaps CS should not be criticized for the non-practical teachings as much as it has been. Law firms are very patient with the development of a lawyer. However, tech companies are not structured like law firms and are therefore less patient (perhaps rightfully so) with a smart young programmer who doesn’t actually know how to program (in contrast to a smart young lawyer who doesn’t know how to practice law). Any further thoughts are appreciated.

  7. Tony Healy says

    Ed, I think the problem is quite different from the one you identify.

    I think CS schools have been guilty of teaching students as if the field is like scholarly science, and thus ignoring the industrial and labour market issues that older professions educate students in.

    This is dangerous because most CS graduates, and software engineers in general, work as staffers in corporations or as free market consultants, and yet none of their education equips them to identify and defend their professional interests. This is in direct contrast to more established industry disciplines such as accounting, law, medicine and so on, where students are explicitly taught about these things.

    I would suggest that the resulting naivity of the CS workforce has contributed to the wider issues that Seth Finkelstein and others refer to, such as the discouraging effects of offshoring, visa abuse and systematic age discrimination. It’s a typically naive response to dismiss these concerns as not affecting the best people, because that’s not always correct, and it’s not the point anyway.

    I actually think CS needs to be reconstituted as a discipline.

    * Matloff’s CACM piece on this topic

  8. I don’t think that computer science has a bad rap “as a haven for antisocial twinkie fed nerds,” I think instead young people are increasingly savvy to legal trends that affect this field long term.

    I see legislation and legal precedent as the real cause for an enrollment drop in the field. I don’t relish the idea of being sued for my security research or my work on peer to peer software and I don’t think that any prospective student in the field does either.

  9. it does little to encourage college degrees that the richest “systems architect” quit college. It also doesn’t help that the role models for “the younger generations” are hip hop, rock, and rap stars, multimillion dollar sports deals, and shrewd robber baron types that are cpa’s.

    The real answer to finding computer “geeks” is to teach it at the elementary level, and let the principles involved become a part of general knowledge, as much as reading, and writing. It could become the “new arithmetic”, finally providing a reason for learning algebra, and set theory.

  10. Randy Zagar says

    I second DMC’s comments.

    Programmers and Sys-admins are FLSA-exempt employees in the US. That means there are no limits on how many hours we can be made to work. Sometimes the pressures aren’t direct. If you’re not seen as putting in as many hours as the rest of your team, you can get dinged on your next performance review and it doesn’t matter that you have two kids and they don’t.

    Clueless management and unreasonable deadlines have also insured that Yourdon’s description of the “Death March” is still relevant today.

    I started actively DIS-couraging people from entering IT back in 1996 when I first saw the writing on the wall… You can make much more money, for instance, as a licensed electrician because: A) your skills aren’t worthess after 5 years, B) you get paid overtime, and C) you can get union representation.

    Why would anyone want to join this field?

  11. Let me relate my experience as one that graduated in May, 2002–just as the largest layoffs in the industry were happening.

    I graduated Magna Cum Laude, with some great recommendations from my CS Professors. I was one of the few in my graduating class with a job promised after graduation. I moved across country to accept the job only to find that the job had been eliminated while I was driving out.

    I have yet to find a job in the industry even though I love working with computers and doing research. Right now, I’m learning how to build a small Beowulf cluster and I plan on improving my skills by gaining experience in analyzing problems and writing programs for parallel clusters. Hopefully, while I do this and associate with others that do the same thing, I will be able to find a way of making a decent living.

    And now for one of life’s little ironies that sometimes drive me nuts (mainly because I’m currently the subject of it). I’m currently working as a low-paid file clerk for a company that makes specialized software for dentists. The company will not yet consider me for a job in programming because of corporate human resource rules.

    I think that the industry will eventually come back full force. Right now, business is way behind the envelope and currently has little demand for more sophisticated systems. Businesses are at present trying to develop reliable products with technology that was new 5 years ago. To stay competitive on the global market, businesses will eventually be forced to upgrade their systems and processes–including software and computer systems. Many of the countries that were playing technological “catch-up” five years ago have now caught up and, in some cases, surpassed the United States in use of technology. At some point, just trying to survive, business innovators will spring up and increase the demand for CS skills.

    Until that happens, however, many of us that graduated during the bust and continue to be interested in computer science will continue to languish without meaningful work or will have to form our own companies to survive. We are the ones that seem to have “fallen through the cracks.” We lack formal industry experience but have the education. The only jobs I see opening up are for “at least 1-3 years formal work experience in software engineering” OR “internship for current undergraduate.”

  12. Dennis Eichenlaub says

    I am 57 years old with a Masters degree and somehow have managed to keep a technical job in industry. I find there aren’t many technical colleagues my age. Sometimes I wonder where all the young engineers go.

    As a person far removed from academia, but who does interact with many people in the field of all ages, I agree CS has a bad rap – as a field with a lot of boring, stressful, low paying jobs – as a field where a lot of work is being outsourced – as a field where outsourced jobs are moving overseas – as a field where layoffs are massive and frequent – as a field that requires a lot of energy and training just to keep up – as a field with a high starting salary but limited growth potential.

    Is the bad rep deserved? I don’t know. It is true that a lot of the unrewarding work is being moved out of the corporation and out of the country. There are rewarding jobs, but they are hard to get and hard to keep. You have to continue to demonstrate your value.

    I would never advise anybody to enter CS, but I would never advise anybody to enter any field either. My advice to anybody in any field is – don’t do that unless you absolutely, positively can’t keep yourself from doing it. Unless you love your field, you won’t be successful. That holds for just about every meaningful career available, and it probably always has.

    I hope all those young engineers found something they love more than engineering. For myself, I can’t imagine doing anything else. I can’t imagine anything else would be half the fun.

  13. “The consensus seems to be that computer science has gotten a bad rap as a haven for antisocial, twinkie-fed nerds who spend their nights alone in cubicles wordlessly writing code, and their days snoring and drooling on office couches. Who would want to be one of them? Those of us in the field know that this stereotype is silly; that computer scientists do many things beyond coding; that we work in groups and like to have fun; and that nowadays computer science plays a role in almost every field of human endeavor.”


    Maybe if CS types lost the I-wanna/gonna-be-a-hero attitude and behaved like adults with skills, knowledge, abilities, and experience worth something to someone, we might get a bit of respect. Keep going the way we are we are going to be seen as ‘food’ by an awful lot of people.

  14. Conversation connection: Take a look at Shelley Powers’ post:

    When We Are Needed

    “More importantly though is this concept of women playing it safe. In particular IT is controlled by a finite group of gatekeepers — all of whom for the most part don’t like to be crossed. Rock the boat in this environment, and you’ll be like me, interviewing at a grocery store for a checkout clerk position.”

  15. Oh, one more thing that Paul reminded me of:

    It might not be that there aren’t as many jobs available, but rather that the jobs available aren’t as high-profile, high-earning as they were pre-bubble pop.

  16. What’s the problem?

    CS getting a “bad rap” is certainly nothing new. “Geeks” or “nerds” have been perceived this way for a very long time, certainly as far back as the mid-80s when most elementary and high schools began receiving computers. Some people believe the perceptions are improving, though that’s debatable. But the fact that these stereotypes have been well established long before the mid-90s isn’t.

    Whatever may be blamed for causing this change seems like it ought to at least be correlated within a space of a few years to the declines. Unless there’s some reason to believe the stereotypes are now taking their toll, when they didn’t during the 90s and earlier, I’d suggest the efforts to improve social perceptions, noble as they may be, might be misdirected.

    Personally, my gut feeling tells me the recent outsourcing trends are a much more likely cause. Or at least prospective student perceptions regarding outsourcing. The evidence is only circumstantial, but at least the steep declines correlate in time roughly with the exposure of tech outsourcing in the media.

    If the job market for your graduates really still is very strong, I suspect your PR efforts to sway perceptions may be much more effective if directed at perceptions of the potential for a career after graduation, rather than the “antisocial twinkie-fed nerd” image.

  17. Ed,

    I was going to comment here last night, but found that my comments didn’t make a whole lot of sense. For everyone, a little background on me: I majored in CS at Princeton. Found that I loved some of it, hated some of it, and detested the rest.

    Theory classes at Princeton were among the driest. The graduate population of TA’s who TA’d the class were among some of the unfriendliest. For CS majors who weren’t excited about math, these courses were hell. Bot that some people didn’t do well. But these courses were required. It didn’t matter how many awards or patents the professor had, or how many algorithms he had designed: the theory professors I ran into (and this was a subset but included, I think, the biggest names) were not great teachers.

    The intro courses, though large, were usually done pretty well. There was actually a great deal of application here. Not writing applications mind you, but applying computer science to real life: towers of hanoi, war (the card game), rsa encryption. Further, there was a good mix of written homework and programming. This was not the case with any of the advanced theory courses I took.

    The cross-specialty courses, however, took the cake. These tended to be the ones that asked the student to apply knowledge of algorithms and computer science to other fields beyond proofs and computer science. I did graphics work and bioinformatics before I left, and these were usually more interesting than the other courses.

    But by far the biggest difference between theory courses and applied CS courses were the results. In theory courses, you did proofs or “discovered” lower bounds. In the applied courses, you either competed with the professor to design something as well as a baseline goal (i.e. compress the phone book, finish a certain problem in X amount of time). The problem with the CS department was that you had to do theory. You could get away with not taking the hard applied courses (but why would you want to?), but you had to take the hard theory courses (although, I’m not convinced that if I had really spent time and energy on the hard theory courses that I wouldn’t have done well… story of my college life I suppose).

    So yes, this is very me-centric. Of course it is. I do regret not working harder in those courses, but I know that a great many CS majors were generally extremely unenthusiastic about doing the advanced theory courses. That’s not really a criticism of the department though. You can’t not teach the theory.

    As for the job-market, at Princeton I think the Career Services department fails the whole school, not just the CS department. But in other news, I think more and more people who are interested in CS are realizing they can do the consulting jobs without CS background (beyond intro).

    Are the stereotypes bad? Maybe. I don’t remember it being nearly as bad as the engineering departments, and they seem to do pretty well.

    It seems like it would be a good idea for industry leaders to invest in basic research as well. They are making money hand over fist (have you ever noticed that head over heels, as an idiom, makes absolutely no sense at all?), and could, in a sense, buy employees this way. I’m not saying that the companies would get any patents (boo hiss), but they could make research funding conditional on a few years employment (or summer employment or whatever). I understand that this carries several issues with it (if the researcher turns out to be a bad employee, etc.), and I don’t know if corporate funded research is the norm out there, but it seems like it might be a good idea.

    As an aside, I didn’t end up going into the programming field. I would have liked to at the time I was graduating (though I love the job I have now more than, I think, any programming job I could have had), but I don’t know that I was found capable enough to.

  18. Dan,

    Funding exerts a tidal pull on research agendas. Even if it were possible to do exactly the research one wanted, while describing it publicly in the funding agency’s terms, these public descriptions would themselves tend to pull others into the types of work the funding agencies wanted. If a bigshot researcher says he is working on X, then others will tend to start doing X-like research.

    I think we need people to be working all along the continuum from purely abstract far-out theory to release-code-this-month implementation, certainly with more people working toward the implementation end of the spectrum. There have always been more interesting problems at each point on the spectrum than there are good people to attack them. A policy decision to cut basic research seems like a mistake, not because those people won’t have anything to work on otherwise, but because their comparative advantage is in basic research, and the field and the industry benefit from a modestly sized basic research program.

    By the way, industry leaders (CEOs and other bigshots from Microsoft, Intel, Google, etc.) are urging government strongly to restore basic CS research funding. They seem to think it’s good for industry.

  19. Ed, is it your contention that all those computer science professors who are doing advanced development projects would actually prefer to do fundamental work, but feel obliged to go where the money is instead? In my experience, academics–perhaps especially computer science academics–are extremely adept at presenting the work they want to do as whatever the folks who write the checks happen to be looking for at any given moment. If so many of them are doing applied development instead of fundamental research dressed up as applied development to appease funders, I can only conclude that either (a) their “bait-and-switch” skills aren’t as good as I remember them being; or (b) universities are hiring professors with bad research taste; or (c) the interesting research problems these days really are on the applied end of the spectrum.

    By the way, I agree with you that industry does advanced development better than academia. Perhaps that’s why the government is cutting funding to academia, and instead turning to industry….

  20. I got a computer science degree in the early 90’s before the .com boom. Personally I don’t recommend that anyone go into computer science right now, and I am personally getting out of the computer field (although I confess to being a software monkey).

    1. When I was growing up, I witnessed the mass movement of manufacturing jobs overseas, specifically I recall the auto industry. I see the same thing happening in computers today. I’m not concerned about having a job today, I’m worried about having one in ten years. I don’t think the long term prospects are that bright.

    2. Even if there are going to be jobs in the US. There are too many people in computers right now. They got into it because of the .com boom and most of them shouldn’t have been there. As the market for computer jobs moves off-shore, more and more people will compete for fewer jobs. Which has a tendency to push salaries down. Not a good place to be in prime earning years.

    3. Computer development get no respect from corporations, it’s viewed as a cost center not a profit generator. There will never be enough time or resources to do the job properly.

    4. The U.S. seems bound and determined to make this country a place that is “creativity” free. The introduction of business process patents, the DCMA, perpetual copyright (de facto), and the latest Grokster decision all contribute to an environment that is unsupportive of technological development.

    Please note: this is not an attempt to defend violations of the law; I think bad companies deserved to be punished. However, by allowing crippling lawsuits against fledgling technology companies without providing any kind of safe harbor has or will effectively cripple technical innovation outside of large established companies.

  21. My experience is that in industry, nobody seems to care much if you have a computer science degree. Developers and employers seem to be satisfied with a couple of 4-day courses at Learning Tree or Oracle Education, combined with a smattering of job experience in just the right skill set.

    At my last job, we had a team of fairly bright, experienced, capable Java/SQL developers who were awestruck by a solution I proposed to a particular problem we faced. My solution: Depth First Traversal of a tree structure. Not one of them had heard of depth first search. And these were guys who claimed to have various sorts of technology degrees. Even though I was a business analyst, I had to jump in and write the code. They were highly suspicious of my use of recursion and every time something went wrong, the first person they looked at was me. Wasn’t my code. They had never encountered a need for something like DFS before, and probably never would again.

    Why should students waste four years getting a CS degree? The jobs don’t need it. [Tongue firmly in cheek.]

    Seriously, though, at the present moment, I’m not sure I’d try to encourage a (US based) student to go in for computer science. As you point out, research funding is decreasing, IT jobs are increasingly consulting-based (rather than permanent employee), demand huge numbers of hours to meet ridiculous release schedules, assembly line development mentality, constantly shifting technologies, tons of outsourcing, etc. Mind you, I love IT. But it’s not for the faint of heart, nowadays. Now, for students who are independently wealthy, it may be different — a CS degree is certainly a wonderful intellectual experience!

  22. I think this makes more sense if you look at the mid-to-late 90s as an anomalous period in the US, during which dotcom mania made a lot of money available for things that otherwise would never have imagined getting funding, including CS research. Otherwise you can draw a down-trending line through CS(&E) numbers starting in the mid-to-late 80s. Blue-sky R&D funding has been a mess for at least that long (does anyone even remember the ferment of the old Bell Labs, IBM Watson or PARC any more?).

    There’s also the problem of attracting the brightest young people into a field that’s perceived to be maturing — the same CPU, OS and network architectures have been dominant for more than 10 years, with little obvious on the horizon to displace them. So even though there is lots of interesting work being done, the general picture is one of filling in a picture whose outlines are already known. Rather like, say, physics at the end of the 19th century.

  23. Bill,

    You’re right: the tension between teaching computer science and teaching programming is an important issue here.

    But, at least at Princeton, our students’ career paths are more diverse than you describe. A significant number end up as neither programmers nor advanced-degree recipients, but as doctors, lawyers, managers, etc. At Princeton, I’d guesstimate that about 1/3 of our majors end up on other career paths.

    Non-majors, of course, have even more diverse careers. As a field, we need to do a better job of serving them.

  24. Dan S.,

    I agree with most of what you say, but I think we have a problem nonetheless. There are tons of opportunities for industry folks to do advanced work. Some of this is work that was previously done by researchers. That’s how a healthy tech-transfer process works. It’s natural for the total size of the advanced development effort to dwarf the basic research effort. But as advanced development has grown, basic research has shrunk.

    University researchers are indeed substituting advanced development for basic research, which is fine in moderation but I think we have moved too far in that direction. Industry tends to be better at advanced development anyway. My sense is that the move away from basic research is mostly driven by the funding squeeze.

    I agree completely that the low end of the field will be commoditized. Students may not realize that a good education is an entry ticket to the high end. (Not the only entry ticket, but a good one.)

  25. Ed, I think the real issue is that there’s no meaningful distinction between computer science and software development (as an Aerospace Engineer, I refuse to call it software engineering) in most computer science programs. Really these should be two separate degree tracks: one for people who expect to go to graduate school and persue research, and the other for high quality training in expert software writing.

    The software industry is a disaster area. Software sucks. Writing it is hard. Education might be able to help.

  26. Clay,

    We have been doing three things. (1) Working hard on our intro course to make it more compelling for our majors and non-majors. (2) Offering more varied courses designed to appeal to non-geeks. (3) Raising the visibility on campus of the department, and especially its cross-disciplinary activities.

  27. I’m watching young people move out of the software business (seeing no future), and at Princeton it’s obvious that the sort of people who used to plan a job in software are now going into biology or finance.

    And yet …

    I’ve been in softwre for forty years. The programming business has shown a remarkable ability to reinvent intself as the world changes and even as solutions show up purporting to make professional developers unnecessary. It’s quite likely that we’ll have a dreadful shortage of programmers in the USA in a few years, even after soaking up all the available offshore resources. (Isn’t India facing a five-year shortfall?) I wonder when the rep of computer science will again turn around.
    – tobias d. robison

  28. At Rice, we’ve seen similar declines in enrollment. At the peak, I had 40+ students in my required sophomore-level CS course. These days, it’s less than 20. While I can’t claim to have rigorously studied the students in my class, anecdotally, it seems that I’ve got some of the best students I’ve ever had. For the most part, it seems that we only lost the weaker / less motivated students. If firms like Microsoft are having trouble hiring enough people who they feel are sufficiently qualified, the problem may be as much a supply-and-demand issue as anything else. Offer more money and get the talent that’s now going elsewhere.

    The research funding issues are another matter entirely. CS departments, around the country, expanded in response to rising enrollments during the Internet boom. All those new professors are now competing for a shrinking pie of research dollars, making the hit rate for grant applications lower than the hit rate for top research conference publications. We can expect some interesting consequences over the next several years. Forget expanding the ranks of CS professors. Our field is going to start looking a lot more like the rest of academia, where there’s a relatively small number of open faculty slots nationwide, and newly minted PhDs will have to look far and wide to compete for an open slot or to settle for a post-doc (assuming they can find somebody with funding for a post-doc). Historically, industry has consumed the excess PhD production, and to outpay academic salaries, drawing much of the top talent away from academia. Given the apparent shortage of talent available to Microsoft, it’s safe to expect this pattern to continue.

  29. Ulrich Hobelmann says

    Well, living in Germany, I really envy you guys. Sure, there’s a cost difference, too, and not everybody studies at Princeton, but at least the US has something like it.

    If your country should ever lack CS workforce, I’ll consider coming over 😉

    Having said that, I think the US are doing much better than many other countries, although the younger and hungrier countries, such as Eastern Europe, are catching up quickly.

  30. No doubt faculties around the country are making the logical leap you describe: enrollments and research funding are down, therefore “computer science” is in crisis, and the nation’s preeminence in the field is in jeopardy. Looking at it from an industrial perspective, though, something very different, and much less worrisome, is happening.

    The tech boom of the late 90’s opened up a huge realm of technical possibilities that are far from being fully explored yet, even without any major new technological leaps. Much of that exploration has been driven by industry, where standards of innovation and currency have skyrocketed. As a result, the line between research and (high-end) industry has increasingly blurred. These days, the interesting problems in research and the interesting problems in the computer industry are virtually identical.

    One of the consequences of this convergence is that investment in advanced development is a defensible substitute for investment in research, both in industry and in government. (I suspect the same is true in academia, where research is increasingly taking the form of large development projects in partnership with industry, rather than pure “blue sky” research efforts.) The decline in government funding of pure CS research, in favor of advanced industrial development, can be viewed as a manifestation of this.

    Another consequence, I think, is that while the “high end” of the computer industry is thriving, and is busy pushing the technological envolope, the “low end” is slowly being commoditized out of existence–outsourced, eliminated by automated tools, or replaced by off-the-shelf solutions. Outstanding or specialized developers are still in high demand, but mediocre ones face a much tougher market, and they’re the ones who were most likely drawn to enroll during the boom, are least dedicated to computer science, and are most likely now to be choosing other majors in response to market pressures. Thus their disappearance from the field is arguably less an indication of the field’s ill health than of its increasing professionalization.

  31. I am curious – what have you been doing to make your program more compelling, and how successful have you been?

    We have seen significant enrollment drops over the past three years, and have been debating what might be effective to help limit or reverse those.

  32. R. S. Buchnan says

    WRT the drop in enrollment in computer science courses, the thing I’m hearing from the students here at Brandeis is that they expected to be taught how to program, and viewed that as the gateway to a lucrative career working in airconditioning. Theory is something they think they don’t need, so when they end up in a difficult crypto class or slogging through databases, they bail and switch their major to economics, which they also think will net them a good job after college. They’re not actually here because they like computers, they’re here because they think money will make them happy, and that computers are a easy way to get money.

    Also, ten years ago the average freshman who came to me for a junior sysadmin job in college was getting hir first serious exposure to using (much less running) a *nix box, and I provided the only full unix shell access on campus (everyone else crippled userland to some degree). Nowadays, those same kids usually have a Linux box in their dorm room, they’ve been tinkering with *nix since they were 10, and I and the rest of the CS department don’t offer them anything particularly unique.

  33. I would suggest you’re underestimating the effect of the weakness of the general programming market. I’d have to dig deep into the statement of “job market for our graduates is still very strong”, but I suspect it may not mean as much as might appear. This year, the programming job market seems OK. But in 2001-2003, it was HORRIBLE. People were being laid-off in droves, companies were crashing left and right, there were a huge number of applicants for every open position. Good programmers were taking a year or more to find new employment.

    The changing economics were a key factor that led me to finally throw in the towel in terms of doing civil-liberties censorware research. I just didn’t want to be unemployed and endure destructive personal attacks while trying to get a new job.

    I’m not at all surprised that there’s still overall disinterest, because, frankly, the market prospects do not look so bright. Globalization and outsourcing are oversold to some extent, but there are real factors which have an impact. There’s far worse professions – but it’s clear the peak is past.

    I mistrust “cultural” explanations, because they lend themselves too easily to advertising campaigns as a “solution” (then again, I *am* roughly one of those “antisocial, twinkie-fed nerds who spend their nights alone in cubicles wordlessly writing code, and their days snoring and drooling on office couches.” 🙂 – Dilbert is my hero). Funding, number of jobs, global competition – these are hard, messy, contentious topics. PR about what great guys and gals are in the field, well, that’s easy, and won’t involve any argument with powerful interests.