The April 2010 issue of Communications of the ACM has an article by Keith Wright titled "Capstone programming Courses Considered Harmful". Dr. Wright teaches business intelligence courses at the University of Houston-Downtown, and once you get past the three and a half columns of autobiography that he opens with, his thesis is:
Enrolment in CS programs is down. OK, no problem so far.
"...a lucrative United States career as a generalist professional programmer [is] a thing of the past" because the jobs are being offshored. Hm... OK, it's not that clear-cut, but I'm still on side.
Further, there has been a "...dramatic decline in demand for U.S. programmers over the period from 1974 to 2004." Uh, what? Oh, there's a footnote (pg. 126): "Demand for database, ERP, and ecommerce servers skills are on the rise." I'm confused: does he think that making Oracle, SAP, and WebSphere behave doesn't count as programming? And even if that's true, demand for programmers has declined from 1974 to 2004? Crap.
"When designing computing curriculums, it is useful to first consider the capstone courses." Not the way I'd do it, but OK.
I need to break the next paragraph down line by line:
"Many of today's capstone courses involve locating real programming projects in the community." Sure, the good ones.
"However, this is often too time consuming." Compared to what? And why does he think it's any harder for CS than for the engineering schools (most of which have to include a year-long capstone to keep their accreditation)?
"Furthermore, real projects are usually too difficult for college seniors." Crap. There are projects of all shapes and sizes out there, from porting Django to Python 3 down to tweaking the web site for a local community group.
"Other capstone computing courses have students working individually on imaginary projects, giving them a chance to build something they own." OK.
"Unfortunately, this may give students a poor understanding of the real world." Well, sure, if it's done badly, and the same can be said of any coursework.
"Finally, we do students a disservice if capstone courses give them the impression they are likely to become professional programmers." Ah, now we come to it...
That last point is, I think, the hinge of the whole article. Wright thinks that most CS graduates are going to go off and do things that aren't programming (like, you know, building web applications 'n' stuff), and that having them do a big programming project in their final year is therefore misleading. His solution?
I believe part of the answer lies in industry best practices like those captured in the IT Infrastructure Library (ITIL) and the corresponding international standard---ISO 20000. So I suggest...that capstone programming projects be replaced with the following internships:
Service desk (first-line customer support).
Programming (good to see this hasn't been thrown out completely).
Problem control (by which he means operating system administration).
Service level management: "Emphasized would be the writing of ethical service level agreements, underpinning contracts, and operational level agreements." Yee hah, I can feel my heart pounding faster already.
I find it hard to think of a better way than this to drive bright students away from computer science: if we offered the UCOSP students job training for Fortune 500 IT departments, we wouldn't have any UCOSP students. Yes, a stint on the help desk is a good reality check, and it's important for computer scientists to realize how confusing our creations are to the 99.5% of humanity who can't think recursively. And yes, software engineers should know what a service level contract looks like (preferably an ethical one, whatever that means), but computer science is supposed to be exciting, dammit, and Wright's vision of computing is about as exciting as a vending machine ham-and-cheese sandwich. Compare his ideas with those of real innovators like David Humphrey (who, by the way, has actually tried his out), and it's painfully clear who's looking backward, and who's going to lead us forward.