The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Any branch of CS where PhD doesn't involve too much theory?

For a guy not very inclined in mathematics and formal theories, is there any branch of CS he can do PhD? I would assume that Operating systems may be one.
Dumbo Send private email
Thursday, May 03, 2007
 
 
I don't know, but if this doesn't work out, maybe you can join an orchestra where not much musicianship is required, or a decathlon team where not much athletic ability is required.
Robert
Thursday, May 03, 2007
 
 
No, you'll need formal math in all CS areas at the PhD level. You can't avoid theory of computation and proofs.
Brian
Thursday, May 03, 2007
 
 
The only fields that come to mind are software engineering and human-computer interaction (or user interfaces). Depending on the university, you might be able to study the legal, sociological and/or economic effects of technology.

Basically, anything that consists of just the computer itself, is going to require some mathematical theory or modelling. The only exceptions tend to focus on how people behave when using computers at which point you're probably doing plain old statistical analysis.

I vaguely remember hearing about an effort to survey people who play MMORPGs and otherwise participate in virtual worlds like Second Life. It's backed by a university and I'm sure someone's getting a PhD out of it, I just can't remember if it's a CS PhD or one of the social sciences.
TheDavid
Thursday, May 03, 2007
 
 
Pedagogy. Serious.
Shamanaiava Ramadshyia Send private email
Thursday, May 03, 2007
 
 
In the UK PhDs generally involve no courses at all! You do the research and learn what theory you need to get the work done as and when you need it.
My PhD was in physics, I needed no maths beyond high school trig but I did have to learn technical drawing, machine shop and a LOT of soldering.
Martin Send private email
Thursday, May 03, 2007
 
 
Even OS work has a lot of peculiar bits of mathematics involved; probability and game theory in the schedulers, specification languages for the interfaces.

It's called "computer science" because it's supposedly a science. Sciences have maths in them. It's a pain -- I'm hardly a brilliant mathematician myself. Even now I periodically run across stuff which is just utterly meaningless and I'm supposed to have learned things like that.

I've been wading through the literature about some of the stuff I'm actually developing and there's NONE of the papers get away without using sub- and super-scripts. Frankly, even though I'm writing actual code that actually does this stuff, the academic side of it still goes straight over my head.


I know it's one of those points round here that people get upset about but an MBA might be a way to go. Software engineering is usually a business discipline and being able to speak to business people about their requirements and understand the answers is a useful and marketable skill.
Katie Lucas
Thursday, May 03, 2007
 
 
"My PhD was in physics, I needed no maths beyond high school trig"

Yes, you can get your "PhD" from a diploma mill for a couple hundred dollars and avoid math, but the assumption is he's talking about a degree from an accredited university. Math is not just for hardware topics, he'll need it in any CS field.
Brian
Thursday, May 03, 2007
 
 
Would you elaborate on why you want to do a PhD that doesn't focus too much on theory?  By and large, PhD's are research oriented degrees.  First and foremost, a Ph.D program is a way for CS professors to make more CS professors.  It's not really an industry oriented degree, by and large.

But as an MS degree holder (in Industrial Engineering), I do now and then see jobs that look very cool that say "Ph.D strongly preferred", and I suspect I don't have much of a crack at them without one.  So I can see why someone might want to get a Ph.D rather than an MS as the "terminal degree for industry". 

I can also see why you might want to spend some time in a Ph.D program as an opportunity to hang out with other CS majors, meet cool and smart people, and hack together some projects. 

Reminds me of a Paul Graham quote from hackers and painters (http://paulgraham.com/hp.html)...

"I've never liked the term "computer science." The main reason I don't like it is that there's no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they're doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers-- studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department."

Maybe you just want to be a hacker?  If that's the case... make damn sure you find a department that's going to be cool with letting you wander off and do your own thing for a while.
Geoff B
Thursday, May 03, 2007
 
 
You're right about operating systems--there's very little theory. The heart of OS is designing abstractions and coming up with clever little ways to implement them. Concretely, you'd spend most of your time running experiments (how often does our new system prevent crashes when we inject faults into the system? How does our new scheduler impact latency for server workloads) and hacking kernels.

Another area to consider is networking. Although parts of networking do involve control theory, game theory, a lot of it is about how to design protocols, analyze how existing ones work, or else to find more efficient implementations of existing protocols. For example, designing a new congestion control technique would count as networking research.

Most of software engineering is theory-free, except for formal verification (which is all theory).

Databases are another one, if you focus on implementation.

On the other hand, some areas are definitely closed off to people who aren't inclined to math: graphics, artificial intelligence, computational biology, brain-computer interaction, programming languages, and of course algorithms.
recent cs student
Thursday, May 03, 2007
 
 
I've worked with several people who has PhD's in computational linguistics and natural language processing. None of these people studied advanced mathematics. But they understood language grammatical structures like nobody's business.

If you know the difference between a gerund and a participle, and you're interested in writing software to read unstructured text, NLP might be a field you could get into.

WARNING: The biggest consumer of NLP technology is the United States government, for its military and intelligence divisions. The private sector (besides maybe google) still hasn't come up with a killer app for linguistics.
BenjiSmith Send private email
Thursday, May 03, 2007
 
 
The former student has a good point. We probably should define "theory".

In a nutshell, I call it a theory if you can desk check it on a blackboard. To continue his example, you're theorizing that a scheduling algorithm is more efficient, and you're proving/disproving it when you run the experiments. If you think you have a better way to prioritize video packets, that's a theory until you prove it one way or another.

Unfortunately at this stage, most computing concepts have grown so complex that universities now require you to mathematically "desk check" your theories before reserving lab time. Keep in mind that they're looking for problems and solutions that an ordinary teenager would not have the expertise to solve. They want you to prove that you're better at research and thinking than the guy with a mere MS degree.

Having said that, don't assume the standard is the same everywhere. Some universities actually have very smart deans who recognize that sometimes you just have to roll up your sleeves and tinker. Given how expensive higher education is though, you don't want to tinker aimlessly. You still need some sort of controlled experiment that can quickly and concisely prove your ideas.
TheDavid
Thursday, May 03, 2007
 
 
Not sure what the original poster meant, but in my world, "theory" means "theory of computation"--i.e., automata, complexity theory, algorithms. Usually things that require very abstract mathematical thinking (and a lot of funny Greek symbols).

You can definitely whiteboard OS problems, but you can also whiteboard a UML diagram for a CRUD app and do a "desk check" of whether it makes sense. Doesn't make UML diagrams theory in my book. ;-)

I'd say what you're calling a "theory" I'd call a hypothesis or claim. OP, what did you mean by "theory"?
recent cs student
Thursday, May 03, 2007
 
 
The problem with theory in CS is that there aren't any theories in CS available. Everything in CS is math, electronics/physics, or psychology. There is nothing unique to computers. I call it the Isotropic Principle of Computer Science. Computer science is like clinical social work; it offers nothing not already found somewhere else.
Rob Henry Send private email
Thursday, May 03, 2007
 
 
But isn't that like saying biology is not important since it could be explained by math, physics and chemistry?
Rick Tang
Thursday, May 03, 2007
 
 
All science is either physics or stamp collecting. ---Ernest Rutherford
Martin Send private email
Thursday, May 03, 2007
 
 
"...biology is not important since it could be explained by math, physics and chemistry?"

Not really, because biology being reducible to math, physics, and chemistry is an unverified hypothesis, due to overwhelming complexity issues and the fact that no biological system has ever been synthesized based on those principles.

CS isn't like that.  People built the computers using the principles of physics, the math of algorithms, etc.  So we know their behavior is contained by and reducible to those principles.

The day biological systems are synthesized from the principles of physics and chemistry is the day those would be equivalent statements.
Robert
Thursday, May 03, 2007
 
 
Well, the original poster did say "formal theories" so his definition is probably much closer to the recent cs student's definition.

Then again, Wikipedia confirms that "theory" has multiple distinct meanings depending on the actual methodology and context of discussion. In common usage, it's the same as an opinion or speculation, but not the same thing as a hypothesis.

I think it's safe to say there are extremely few PhD programs where you just go out and do something; i.e., there's nobody saying "I need an algorithm that does X, go create one for me." Nor can you get a PhD simply by reading books. In order to get one, you generally need to ask a question no one's answered before, and prove that your answer is correct.

And unfortunately, all the easy problems have already been asked and answered.
TheDavid
Thursday, May 03, 2007
 
 
<Everything in CS is math, electronics/physics, or psychology. There is nothing unique to computers.>

This is an interesting point.  I think that a discipline can survive as a distinct subset of another provided that it is easy to draw boundaries around very relevant problems... for instance, the Industrial Engineering department I got my MS from focused very heavily on Stochastic Processes and Mathematical Optimization.  Now, there's actually no reason why research in these fields couldn't be handled a group within a math department - and in many universities, that's exactly where they are located.  But they're distinct and important enough that the department can have an identity apart from math even though they really are a subset of math.  The danger here is that the field is always fighting the outer group to remain distinct (ie, not get swallowed up).

Another way for a field to have an identity is to bring together a few different disciplines in a way that really can't be replicated in the ancestor departments.  Computer science may have managed to do this - like someone already observed, you have math, physics, electrical engineering, plus a few other disciplines concentrated in a CS department,  The danger here is that the field has to fight to avoid fragmentation (ie. get broken up and reabsorbed into the various ancestor departments).
Geoff B
Thursday, May 03, 2007
 
 
Get your phD at the University of Pheonix.

Thursday, May 03, 2007
 
 
"WARNING: The biggest consumer of NLP technology is the United States government, for its military and intelligence divisions. The private sector (besides maybe google) still hasn't come up with a killer app for linguistics."

Readable documentation?

Sincerely,

Gene Wirchenko
Gene Wirchenko Send private email
Thursday, May 03, 2007
 
 
Gene - getting NLP to understand the sort of 'readable' documentation we normally have to deal with would be a good PhD.
Now if NLP could generate readable documentation !!!
Martin Send private email
Thursday, May 03, 2007
 
 
It is not possible to earn an MSCS from a decent school without getting pretty heavy into theory!
MSCS Holder
Friday, May 04, 2007
 
 
>MSCS
That is the different between an UG degree (MS or BS) and a post-grad degree.
Your MS had as much theory as they could find because some of it may be of use to one of the class sometime.
A PhD is more like real work - you don't learn anything until you need it, there is a lot of stuff out there and you can't know it all.
Martin Send private email
Friday, May 04, 2007
 
 
I would say the Computer Science is not a science for the same reasons that Mathematics is not a science.

To say that computer scientists may not have studied advanced Math is to miss the point. Mathematics is too broad for anyone to know everything. Research in computer science has pushed the boundaries of math a lot in certain areas, but much of traditional Math, e.g. calculus, is of little use (except for EE's doing hardware, I suppose). Probably there are results in, say, topology or algebra that could be of help in CS, but if you don't want to be the one looking for them, it's probably not a problem.

One place in the computer world where PhDs earn big bucks is on Wall St, but the PhD's are in Math, and domain knowledge is critical.
Peter Vanderwaart
Friday, May 04, 2007
 
 
Geoff B:

I would say, however, that while a PhD is not possible a Doctorate is possible. A Doctorate being an applied use of computer engineering knowledge. I would even go further to say that a person holding a Doctorate in Computer Science holds an accurate and useful degree.
Rob Henry Send private email
Friday, May 04, 2007
 
 
<--I would even go further to say that a person holding a Doctorate in Computer Science holds an accurate and useful degree.-->

WHen I was in grad school, our department head told us that D.Eng degrees (doctorate of engineering as opposed to PhD) were permitted but were very rare.  Industry bound students, to the extent that they existed, still pursued PhDs.  That said, I think these students were forced to shoehorn their academic needs into a program that didn't quite match what they were looking for.  At their essence, Ph.D programs are research degrees for future professors, not terminal degrees for industry (Stanford describes its MS as the typical "terminal degree for industry" - btw, I went to Berkeley for grad school, so I don't really know how that plays out in reality down south).

There isn't really a JD or MD style doctorate for engineering, which is kind of a shame.  An MS feels a little thin - I wanted a burlier experience.  I guess a Ph.D iss the closest thing we have in engineering to the JD or MD, which is probably why people who want a meatier experience than the MS but don't intent on an academic career still pursue it.  But a longer, more coursework and project oriented engineering doctoral degree might be helpful.

(I think stanford offers the "Engineer" degree, which falls somewhere between MS and Ph.D, but nobody seems to have heard of it.  I have no idea if it has more pull than an ordinary MS). 

A widely recognized Eng.D degree - which seems to be what you're describing, would be a great option, but it doesn't seem to be out there right now.  There needs to be a critical mass for this sort of thing to take off.
Geoff B
Friday, May 04, 2007
 
 
GB:

There are a few schools that offer a Doctorate, Colorado Technical University being one of them, but you are right in that few schools have such programs. That is a shame as it is truly the level of knowledge the vast majority of grads students are seeking.

I have read hundreds of thesis papers from grad students and not one of them really contained information and research to the level of a PhD research program. Most simply stated the known and tried to be clever about stating a different approach to a known result. I think in reality most grad programs are money mills as is the rest of the university system. Pay the money, spend the time, and get the degree.
Rob Henry Send private email
Friday, May 04, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz