I'm surprised that admission into Computer Science PhD programs is so competitive. I would think that with the strong job market for computer scientists, there would not be as many students who would want to make the commitment to a PhD program over other job and entrepreneurial opportunities.
I am not surprised that it is competitive (PhD's in general are kind of oversupplied), but the form the competition takes:
"Maybe you didn't publish as an undergraduate.... Maybe you can't even write a very compelling research statement yet."
When I was applying, no undergraduates had published research. And the "research statement" could hardly be described as "compelling"; that was one of the points of the breadth requirements for the graduate program---my eventual research topic was completely unrelated to my interests or knowledge coming out of my undergraduate program.
It's a positive development that admission into a decent PhD program requires research experience. Some people somehow cannot make the jump from classroom exercises to production work, and you would rather that they don't get accepted, instead of having to throw them out a year later.
Besides, a research lab is a workplace after all, and some kids are completely missing the social skills that are needed in a working environment. You can't have that sort in a PhD program either.
> It's a positive development that admission into a decent PhD program requires research experience.
No, it really really isn't. The vast majority of undergraduates have no effective access to research experience, even many that are fairly inquisitive and are receiving a pretty good education. This is especially true of undergraduates who are unable to afford tuition at top institutions (and increasingly even in-state public university tuition is unaffordable for the flagship universities that would be considered "top institutions).
Requiring research experience in advance of grad school turns grad schools into an elitist echo chamber.
I have to say, I agree with this. You risk optimizing to early around a local max, not a global one. Primarily due to lack of priors. However, I will be the first to admit true research is seriously a different aptitude than acing a lecture course. Advanced degree candidates should certainly be screened somehow for the latter. But my gut is that this is just optimizing for grant extraction. Truly powerful work is always second fiddle to the "more money" hampster-wheel that is peer-reviewed academic research.
I would argue that it isn't, because it simply pushes the boundary back, and possibly making it even less appropriate.
I can't see having valid or "compelling" research experience as an undergraduate while taking a full load of classes (ok, so you have to take advanced placement courses in high school, which my school did not offer even if my school district did; I'm not sure one way or the other about that) and possibly working to support yourself (I'll leave the alternatives as an exercise to the reader).
At this point, you're filtering on many criteria that have absolutely nothing to do with successful research.
...and of course Brown (where the author is) is top-twenty, in fact tied at #20 [according to US News & World Report[1]] with places like Rice. It's pretty elite.
Well, you really don't need to be a good engineer, but the skills required to do anything meaningful in theoretical computer science PhD program are more hardcore and rare than good SW engineers - from what I see, most of the people who can do theoretical CS are already doing it; and most engineering-oriented CS researchers couldn't/wouldn't cross to theoretical CS no matter what.
I mentioned only some subset of PhD applicants, which might not be small. So there are many other types of applicants who apply with different and various reasons.
As for your question, no, I don't think that scientists in all of the branches of CS need to be good engineers. But that is just my personal opinion.
I'm not sure how these students are filtered out at other places, but in Brown's CS department, PhD students are required to pass a "programming comp" that involves a fairly intense week-long programming project. You don't need to be a superstar coder, but you do need to be able to program effectively in order to pass.
It completely depends on what area you're going into. Software engineering, systems, and AI students obviously need significant coding experience. HCI and theory (ie math), not as much.
Right, but what I wanted to highlight - a person might be able to code quick sort algorithm or breadth first search, but unable to get paid doing real world coding - when it is the client or employer who needs to be satisfied.
So basically when you have a choice of being unemployed vs doing PhD and getting some studentship, you obviously prefer the latter path.
And I believe there are quite many people who can "code" but unable to get paid.
If you can "code" so poorly that you're unable to get paid, I can't imagine how you'd get even close to getting into a PhD program, even if your specialization is math of finite state automata or human interface guidelines.
Coding (or being DBA or analyst, depending on your area) to the level of getting an okay salary is quite trivial compared to that - from the PhD students I've seen the 'most unemployable' ones would be so not because of their ability to code but because of social/mental issues.
Theory cs could care less about coding abilities. It's never a bad thing to know how to code, but I can go though the entire PhD program without coding a single line of code. (Well not really, one of the professors in my PhD program committee recommended me to do one systems course. other than that, I just prove theorems. )
Yes, we've got a bunch of people like that in our PhD program as well - but 100% of them, despite not writing a single line of code for years, could still easily get a paying job in industry and be mostly okay (though less happy) there.
If you can prove theorems, then you can also code CRUD websites by following a tutorial, and get paid for that.
If you can't write code if your life depended on it but can write papers on human interface or methodology issues, then you can get a job as a system analyst in any large software development company and keep not writing code there.
Many US students do not go into PhD, because, as you mentioned, due to the strong job market (and also a 20k/year stipend). Most of the PhD students are foreign.