“Industry-Driven” Computer Science Education

A comment I heard this weekend, from an honest-to-goodness professor in a (mediocre, but not laughable) computer science program, went something like this. I’m leaving the source anonymous, to protect the guilty.

Students are making more money selling iPhone apps than others who have graduated and have jobs […] Companies that are hiring our graduates are moving away from plain old C++ and Java to Objective C, and we, as a computer science department, are scrambling to keep up.

In other words, they are trying to figure out how to teach students to build iPhone apps, because their students might be able to make some quick money, and potential employers are supposedly moving to Objective C. (Okay, that second one is probably just imaginary. I should mention at this point that the conversation was sparked by this professor promoting the book he’s selling on building iPhone apps, so this isn’t an unbiased source.)

Now, in general, computer science education is always going to be defined by a tension between the theoretical and the practical, between helping students to understand the nature and scope and limitations of computation in general, and giving them specific skills that will help land paying jobs as computer programmers. It would be nice to pretend that the two goals aren’t in tension at all, that achieving the first is the best approach to the second. But taken to an extreme, that would be a lie.

Most people, I think, would probably argue for some kind of balance between the two goals. Sure, we ought to give students practice in the day to day craft of computer programming as part of their education. After all, for better or worse, the majority of computer science students are going to graduate and look for jobs in a world where functional programming and automata and anything beyond the bare basics of complexity theory are considered niche subjects.

Still, aren’t universities still different from technical training programs? Surely we have some higher purpose in mind than to teach students the details of the Spring framework in Java? Surely we aim for an education that applies no matter your choice of operating system, or target device, or web framework?

Apparently not.

So why is this attitude wrong? Okay, there’s the obvious things… the ones that initially got me a bit fired up when I heard this. There’s the measurement of success in dollars. There’s the complete dismissal of a rich and interesting field of human knowledge in favor of getting people quick jobs. But even if we assume that the goal of computer science education is to produce larger salaries among the program’s graduates, this is a deeply flawed attitude toward the educational system, for three reasons.

1) A career is 30 years long!

Thirty years ago was the year 1981. None of the programming languages that are popular for new software today existed in 1981. Object oriented programming was confined to small and largely research-based communities (and meant something rather different than C++!) So with that in mind, what makes us expect that even the paradigms of today’s world are likely to be dominant in the middle of students’ careers in 15 years, much less for 30 years until they are preparing to retire?

Now we’re going even further; the person quoted above is talking about rearranging their entire computer science education around a platform and device that didn’t even exist four years ago, and may or may not still be a significant development platform in another three or four! Remember, undergraduate CS education is a once in a lifetime experience… let’s not make it a crap shoot in terms of which two or three year period you happen to hit that age.

2) This is misunderstanding the reasons for even the short-term profits made in new fields.

This idea – that lots of people made a lot of money developing iPhone apps, so colleges ought to start teaching it – is doubly ironic because none of those people were taught how to make iPhone apps in college. Indeed, but the time today’s college freshmen are finishing up, it’s likely that iPhone apps won’t be the kind of free for all gold mine they were in early days. Just like no one made money on flimsy dot-com ideas after 2001, these students will be graduating into a world where mobile apps are saturated and money is made by incremental improvements and careful market research and adaptation.

If your goal really is to help your students get rich on a software fad, you should be preparing them to be able to capitalize on the next software fad, not the one that’s already well known to the world! Of course, we don’t know what the next fad will be… but we do know a little bit about giving people the general skills to adapt to a variety of software platforms and paradigms because they understand what they are doing and what the landscape of computation looks like.

3) You can’t teach a class in how to drop out of college and become a millionaire.

Worst of all, though, is that the motivation given here is ridiculous on its face. Many of our students, the claim goes, are making more money selling iPhone apps than they would be finishing their educations and getting jobs. But is that a statement about the iPhone apps, or is it a statement about those students?

It’s hard to deny that occasionally students either drop out of college or have side projects in college, and accomplish really great things. Most of the time, their college education has little to do with it. From Bill Gates to Linus Torvalds to the kids writing successful mobile phone apps today, there are always those who have a remarkable drive to accomplish something – whether it’s to make a fortune, or to create something awesome for the world – and do it. But does that mean that all college students would strike it rich if only we’d taught them the skills they needed to do what Bill Gates did?

No! There are a lot of factors involved there; ambition, motivation, personality, and a lot of luck… but if there’s one thing we can be pretty sure of, it’s that the sort of student who can’t be bothered to read a book on their own and learn Objective C and the iPhone SDK is probably not cut out to be the next wizz kid that strikes it rich. That requires a bit of independence and self-motivation no matter how you look at it.

What should we do about the students that drop out and succeed? Be happy for them! But if a student wants to leave and do something on their own, they are not the target audience for a university computer science program. The program is wasting its breath tailoring itself for those students. They aren’t going to stay anyway! Even if they do eventually come back and finish up their university studies, it won’t be to help them keep up on the latest fad; it’ll be because they recognize the value of a broader education.

Related

5 Comments

Saw this blog on planet Haskell feed, and couldn’t abstain from commenting.

Here’s some data from the trenches: Inudstry is split in two tires hi-tech (google, apple, microsoft, amazon,adobe, intel .) and low-tech. I’ve worked for both, interviewed for both (both as the interviewer and – less often – as interviewee.

The high-tech tire , as a general rule, couldn’t care less what language your student knows or whether or not they know anything about the flawed by design Spring framework. All popular frameworks as of today are flawed, otherwise they wouldn’t get popular. The interviews are generally algorithms , problem solving, basic CS stuff. The language doesn’t matter, but they have to be able to write correct, good quality code on the spot in whatever language they know.

The low-tech, unfortunately, will test you if you can use spring or whatever it is they’re working with. And it’s where the big numbers are.

My current team sacrifices 15% of our time interviewing . This includes “a lot” of college kids. What a big waste of time ! I’ve seen people finishing their PhD who couldn’t get a simple recursion right. Ivy league master’s degree in CS ? It doesn’t really matter, it tells me nothing, I have yet to interview one to impress me and have had plenty of disappointments.

How do you measure the quality of your educational process ?

Can we please get to a point where, if I see a degree from this or that university, I can simply trust the candidate is good enough to bring to a on-site interview ?

The general process in the big companies is 2 phone screens to see if the candidate is good enough to justify the expense for bringing him or her to a on-site. The phone screens are big freaking waste of time, they are simply depressing. I wonder how it should feel on the other side of the line, for kids who spent a ton of money to learn something and they don’t get much out of it …

Wrt your colleague’s comments, the world will not run on iPhone apps alone :) Is the role of university to maximize the “chances” of monetary gain for their students, or is it to build up the generations that will keep the society going in the future ? From a student perspective, do they want a 1% chance of striking it super-rich or do they want a 50% chance of making 90K$ out of college ?

So please forgive my rant, but given that I wasted so much of my life interviewing the output of this process, I am really curious why there is such a big disconnect between what high-tech needs and what the university builds.

For what is worth, we’ve had consistently good experiences with kids from UT Austin, and University of Waterloo.

Curious / Jul 19 2011 9:09 am

Dear Costin,

It’s one thing to rant, another to whine.

Consider that your “sacrificing” 15% of your time indicates how a large part of your job is merely sinecure.

Big businesses, software ones without exception, optimize for weird things, one of which is predictability of financial flows, for which wall street pays an exorbitant premium. Hiring a single ballast to soak in all of this quarter’s excess revenue would be verboten; better to spread out the lard on multiple conceited types that will act busy, demanding, and entitled, thereby
auto-justifying the spend to the unsuspecting.

And guess what happens in a business downcycle? Remember that reality TV show? At best you, as manager, layoff your underlings and then yourself.

Second, the reason I and my colleagues are wasting time interviewing is because there are so many opportunities to write _useful_ software, yet so few qualified developers to write it.

Trust me, what happens on Wall Street really doesn’t matter anymore when phds in computer science cannot pass the entry level bar. And the bar is not that high at my company – I have a sophomore intern who would pass it with flying colors.

This means that a significant part of higher education has become a print mill and these kids are taken for a ride.