How many Ph.D. students should a professor advise?
There is no single answer. The usual constraints are time and
money. It depends on one's teaching, administrative and other time
constrains (such as advising Master's and Bachelor students) as well
as the ability to fund such students. Also how do you count part-time
students, students not in residence, students you officially or
unofficially co-advise and students from other schools who are
long-time visitors at your institution.
I ideally like to advise three full-time Ph.D. students at any one time. More and I
find it difficult to find interesting research problems for the
students and not enough time to properly help their research along.
Some professors can handle more students, some should never advise any
students. Particularly in the more applied areas of computer science,
professors need a considerable number of slaves
graduate students to help them with their projects. It's much easier
to tell someone what to code than what to prove.
maybe the difference is that when a theory advisor gives out a problem to a student, the advisor tries not to work on this problem himself or he would probably solve it and leave the student without a phd. when a systems advisor gives a design/coding problem to a student, the advisor is all too happy not to have to do it himself.
so theory advisors need to carefully pick problems that they dont want to work on themselves to give to their students. systems advisors can just give any of their coding work to their students. Hence, it's harder for theory advisors to have enough problems to give out and therefore harder to maintain a lot of grad students.
I dont think lance was claiming that writing good code is easier. he was claiming that there is more of it to give out.
As a theorist who plays a bit on the systems side of the fence, I'd like to comment on your comment.
I think you have a valid point, although I think you could have expressed it more politely. I would indeed say it is difficult to write very good code. Perhaps more importantly (and perhaps this was your point) it is very difficult to come up with very good high-level ideas -- what I would call system designs -- that can have a big impact when coded appropriately.
Now, let me try to make Lance's point, as I see it, a bit more clearly (and perhaps politely also). I would say it is much easier to do mediocre (or poor) systems work than to do mediocre or poor theory work. Mediocre systems work means you end up writing code implementing something -- probably something your advisor told you to write so you could finish. The something might not be great, but at the end of the day, you still have a working product to show people, and perhaps some people will use or like it. Just the fact that you have something means something.
Mediocre theory work is much harder. Your advisor can't tell you how to prove something, or there's no point -- he/she could have written it up faster themselves. (While it is true systems advisors could write the code faster and better themselves, they generally don't have time -- this is generally not a problem for writing down a proof!) And if at the end of the day you have just not so interesting results, your audience is essentially empty.
So I agree with you that the top work in systems is as hard as the top work in theory. But I hope you'll consider that mediocre work -- unfortunately, the majority of work produced in general, but arguably especially by graduate students -- might be easier in systems.
"i disagree. more snobbishness from theory folks. good job."
Even though it should be hard for you to accept, this is the case.
It is not snobbishness to claim that theoretical computer science is the toughest field of computer science; it is just the truth.
The problem is that systems people see this fact as an elitistic attitude of theorists.
"most theory profs should never tell students what to code, since they have never or have rarely done it themselves."
Nobody claims that programming is easy; however, it does not require the intellectual capacity necessesary to produce a deep theorem in mathematics or theoretical computer science.
Note that several researchers with a PhD in theoretical computer science now do research in applied fields like databases, AI or networks (and are very established in these fields). Can you provide an example in the opposite direction?
Note that several researchers with a PhD in theoretical computer science now do research in applied fields like databases, AI or networks (and are very established in these fields). Can you provide an example in the opposite direction?
Is it because theory is difficult or is it because it is uninteresting/"useless" to a large part of community?
The thing is that theorists can also do research in practical fields (and they do) if they decide to. For a systems person, the opposite direction would be (almost) impossible.
Most systems research isn't science (and I say this as a software researcher). Someone mentioned it was hard to come up with good systems designs. Well, we don't really know, because 90% of the research consists of unverified/unverifiable design claims that are either empirically vacuous or tested on toy examples. Theory has a strong mathematical pedigree that provides a good sense for what is valuable (and presumably difficult to do). Systems, software engineering in particular, lacks a sense of what is good work. We need to fix this.
I think emphasizing this dichotomy between theory and practice is foolish. At least in my field, formal methods, really good work should have both theoretical and practical value. Some people may focus more on proving theorems than implementation (and vice versa), but to be very successful, your ideas need both theoretical and practical value.
It is troublesome to me that the term "theoretical computer science" does not usually refer to all theoretical work in computer science, but rather specific areas of data structures, algorithms, and complexity theory. Computational geometry seems to fall in that as well, but that may just be a function of my university. Though computer scientists are doing quite a bit of theoretical work in category theory, logic, and analysis, this work is not usually included in "theoretical computer science".
So far, I know of many more theorems that I would like to try to prove than time I have to prove them. So I'm surprised that coming up with good theorems turns out to be difficult, but I am still a grad student, so perhaps I'll understand this claim better once/if I become an advisor.
The thing is that theorists can also do research in practical fields (and they do) if they decide to. For a systems person, the opposite direction would be (almost) impossible.
I don't think you really know what you are talking about.
"Applied researchers" do "theory research" all the time. Just browse proceedings of some of the premier applied conferences (SIGMOD, SIGCOMM, ICCV, etc). You will see plenty of insightful algorithmic research happening there, proofs included.
Geez, looks like some raw nerves were touched here... if I could make explicit a point that I don't think anyone has come out and said yet (though it's somewhat implicit in some earlier comments)... a lot of good sized systems research projects can easily accomodate half a dozen grad student programmers, some of them even more. If a professor has a couple projects going (which is a lot, but is certainly doable), this could correspond to a pretty large number of graduate students, all of whom have clearly defined goals and are not feeling left behind or neglected by their adviser.
In contrast, "large-scale" theory projects are much more rare, since the development of theory is by nature less structured -- you can't plan in advance exactly who will prove what. Thus, theory students can require more hands-on guidance, since often each student will be involved in his or her own unique line of research, with no straightforward global roadmap.
This says nothing about the relative hardness of systems or theory, and I think people on both sides are being needlessly derogatory. All it says, and I think all Lance meant to imply, is that it is often easier to find work for systems grad students to do (however hard the work itself may be), since the manpower needed for a reasonably large systems project is relatively high, and the division of labor is much simpler than in most theory work.
" "Applied researchers" do "theory research" all the time. Just browse proceedings of some of the premier applied conferences (SIGMOD, SIGCOMM, ICCV, etc). You will see plenty of insightful algorithmic research happening there, proofs included."
Obviously, you are not a theoretical computer scientist.
Indeed, several papers in these conferences have an algorithmic flavor (notice that most of them have a theoretical computer scientist as co-author). However, none of them constitutes an advancement in the foundations of computer science.
Proving that a problem is NP-complete using an almost trivial reduction is not what theory is about. Same for devising a trivial algorithm based on standard techniques.
I am not saying that these stuff is not respectable research, but such a paper is not considered a TCS paper.
Particularly in the more applied areas of computer science, professors need a considerable number of (slaves) graduate students to help them with their projects. It's much easier to tell someone what to code than what to prove.
Although I don't agree with the pejorative nature of the way this is stated, it has a lot of truth in it for a simple reason: Systems designs have much more decomposable structure than proofs. This decomposability is a key feature that theory research generally lacks. How many of us could take our favorite problem and, based on a single high-level design, be able to parcel out pieces that we have a good idea will work together?
It isn't that theory is inherently harder than systems (or vice versa). It is just that it is harder to have a single unifying theory project that will yield good meaty problems for large numbers of students.
Certainly theoretical research and systems research require different (but not mutually exclusive) kinds of talent.
The issue is not which is harder. Rather, Lance was making a comment about the conditions for doing valuable research. One can't keep an outstanding theorist down - nothing stops him/her from solving a major open problem and getting due recognition. On the other hand, even a very talented systems researcher needs a lot of other things to go right to make it in academia. Systems research is intrinsically more political, like experimental physics or biology.
Does anyone seriously deny this? To the anonymous commenter who commented on an earlier post about STOC/FOCS being "beauty contests": you don't know how lucky you are to be a theorist.
I agree that "hard" is a stupid adjective to use. For me, systems research would be much "harder" than theory research because I adore theory, and even when it's a struggle, I find it unfailingly fun.
On the other hand, one can think of meaningful ways to differentiate "theory" from "systems" that might fall along the lines of "intellectual difficulty."
How many theory projects does a typical theorist start, but then give up on--at least for a while--without meaningful results or a publication? (Hint: If your answer is not at least 40%, you should probably be working on harder problems.) I suspect that the same is not true of systems projects, and this alone can create difficulty with students. In general, we only have vague ideas about what the solution to a problem should look like, and we are often wrong.
I figured I should try not to piss off both theorists and systemists simultaneously, so I threw in a low-ball figure. I think 90% is probably too high. It might mean that you're giving up too easily :)
How many theory projects does a typical theorist start, but then give up on--at least for a while--without meaningful results or a publication? (Hint: If your answer is not at least 40%, you should probably be working on harder problems.)
...
About the 40% above, well some would say that it is more like 90%.
Well, how long do have to think about a problem to have officially "started" on it? If the answer is at least a month, then my own average is probably about 50%; if a day, then well over 90%.
As someone pointed out earlier in this debate, I think there will always be a arguments as to whether theory or systems research is harder (or more valuable), as has been with theoretical and experimental branches of the hard sciences. No point arguing about this.
But at the end of the day, both are valuable pieces of research. Experimental research, by its nature, is more engineering-oriented (read coding), and theory is more science-oriented.
Another comment I had was on how theoretical computer scientists often like to think of themselves as doing "mathematics". In my opinion, apart from a few, top, theoretical computer scientists, no-one is doing the real hard "mathematics". Mention to a real mathematician that you are doing "mathematics", and I'm sure that he will laugh out loud.
As to an earlier comment about it being easier to do "mediocre" systems work than doing "mediocre" theory work, I think you hit the nail on the head. The same also holds if you replace the word "mediocre" with "incremental". It is much easier to have incremental results in systemsy areas than in the theoretical areas of CS.
Interesting how this whole discussion got sidetracked based on one throw away comment...
Take note Lance!
Back to the question. How many PhD students should a THEORY advisor have?
I think 3 is a good number, but more or less depending on time, how many good research ideas the advisor currently has, his/her energy level and so on.
I have a friend who is a biologist. When she has an interesting idea, before pursuing it she has to think carefully about the resources needed. 6 months worth of work in the wet lab had better lead somewhere! There is often no middle ground between 0 and 6 months.
In Theory, we have the luxury of being able to allocate our time fractionally: "I'll commit to working on this problem for x [hours, days, weeks, months]", then decide whether to commit some more time or not. We get to choose x. Biologists don't. It's a strong incentive for them to restrict their research to projects with high expected yield, for which they are have good idea in advance that the outcome will be publishable: what theorists would call "easy" problems. The situation for big systems projects might be similar to biology...
So, it's much easier for us theorists to spend some fraction of our effort on "hard" problems, that is, problems on which we are almost clueless. On the other hand, at the end of the day, even in Theory, very few papers are truly surprising ...
In my opinion, apart from a few, top, theoretical computer scientists, no-one is doing the real hard "mathematics".
Not in a conventional sense, for sure.
Mention to a real mathematician that you are doing "mathematics", and I'm sure that he will laugh out loud.
That is not a measure of anything. Mathematicians as a group are a particularly snobbish bunch, particularly after the G.H. Hardy era. They used to say the exact same thing at one time or another about probability, statistics, logic, graph theory, combinatorics. In the end of all of those "laughing out loud" mathematicians were proven wrong.
It is quite interesting that many of the absolute top mathematicians of this century (von Neumann, Godel, Kolmogorov, Arnold, Smale, Thurston, Odlyzko, Graham, Turing) welcomed computers and saw value in them. It is the the next tier of lesser stars that tends to be less CS-friendly.
I kinda agree with Claire Kenyen. And speaking of biology research, I heard that some biologist once said, "the idea is cheap." I guess that it is more or less true in most of biology or systems research.
"the idea is cheap." I guess that it is more or less true in most of biology or systems research.
That is also more or less true in most of theory research. Except for a few top papers each year, the rest is crap. Which is also the same with biology and systems research.
If you guys want to pick on somebody for having lots of easy work for grad students, not that it is a measure of whether something is easy or not. You should pick experimental Particle Physics. I think there you can find like 20 students to a researcher or something. Somebody has to build the experiments. (okay I'm exagerating but it is a lot)
But here's the flip side of the question, how many professors should a grad student get to know his/her work?