I have a B.S. in Engineering. How can I get into a great Computer Science PhD program?
October 6, 2012 5:59 PM   Subscribe

I have a B.S. in a mostly unrelated field. How can I work towards getting into the best Computer Science graduate program possible?

(My first question here. Sorry for errors.)
I'm a fairly non-traditional student, and I need advice on the best way for me to get into a quality Phd program in computer science.

I'm in my 30's and have a degree in civil engineering. A couple of years ago I graduated top of my class, but from a mediocre school. I have not taken the GRE. Honestly it was my 'safe' and 'easy' choice. What I really want to be doing is research, specifically machine learning/artificial intelligence. Due to some recent life and (positive) health changes, I now feel both capable and obligated to do this. I should spend my life working hard to make humanity better.

My thought is, in order to do the most I can, I should become the best I can. That makes sense right? Therefore my mid-term goal is to work hard and get a doctorate in computer science at the best school I can possibly get into.

My two questions are:
1. Should I try to apply to a quality grad school now (and do the prereqs as a grad student) or get a BS in computer science first from the local medocre school.


2. Should I try to get into the best masters program I can, and then try to get into a PhD program at a better school, or should I directly apply for a PhD program (I understand it's common to skip a masters)

Or actually am I worrying to much about getting into a 'great' program and not worrying enough about doing this ASAP and getting into the industry?

I don't mind investing the time. I just want to know I'm doing everything I can.
posted by EthanAI to Education (11 answers total) 2 users marked this as a favorite
Since you graduated, what have you been done for work?
posted by oceanjesse at 6:03 PM on October 6, 2012

Should I try to get into the best masters program I can, and then try to get into a PhD program at a better school, or should I directly apply for a PhD program (I understand it's common to skip a masters)
A standalone Masters degree in CS is a vocational degree. The students in a typical Masters program are doing the program to get a leg up at work. A PhD program is intended to prepare you for academia. The PhD students are in it for the long haul and much more motivated to deeply understand the material. I did my MS degree as part of a joint BS+MS program. The MS helped me earn a little more money in my first job. Beyond that, the main benefit was that my program allowed me to take more of the deep computer science classes that I was interested in.

Do you want a job creating software or researching and teaching Computer Science?

The market is still fairly hot for the software engineering field, but there is no guarantee that it will still be hot in the 5-8 years it will take you to complete a PhD. That's fine if your goal is academia. But it is a long road to a better industry job.
I don't mind investing the time. I just want to know I'm doing everything I can.
Is your goal a gold-plated degree from Stanford or something that the degree will lead to?
posted by b1tr0t at 6:36 PM on October 6, 2012

I would apply to the PhD programs you are interested in, specifically ones with faculty whose work you are interested. Bonus points: write to the faculty individually about their research, so that they know you're interested and curious and might be a good worker and researcher in their lab.

Worst case, you don't get accepted. Next best, you get accepted provisionally into the Masters program, and can show your stuff there (probably with less financial aid than the PhD program). Best case, program of your dreams.
posted by zippy at 7:13 PM on October 6, 2012

I have a BA in History and English from a pretty good liberal arts university. 20 years after that, I applied to and am in my second year of a two year professional Masters at a top-10 engineering school in the Software Engineering program. At my school, Software Eng is in the school of Engineering and Computer Science is in the natural sciences.

A professional masters is probably easier to get into at my school, because the risk is taken by the student (or more generally the company that is paying the tuition). Loans are available for the part-time program I'm in, however I can take this course and keep working. Also, the GRE is a must, but there are plenty of on-line practice tests to help you get prepped, at the cost of lots of grad-school spam.

Research can be in either Software Eng or Comp Sci, but if you're looking at algorithms for AI/Machine Learning, you need to find the programs where you can find the advisor who is doing what you want.

One of my profs has a group working on the automatic detection and correction of software faults, which I think is fascinating research.

There are also some fascinating programs in Machine Vision which can be a component of Machine Learning at Georgia and Princeton.
posted by Mad_Carew at 8:13 PM on October 6, 2012

CS may be a bit odd in that its MS programs are often not part of the academy proper. b1tr0t describes it very well when he says it's a vocational degree. You'll meet a lot of people using it to change careers into programming, for example.

However, if you don't have a CS background, an MS can be a way to get some exposure to the material. You just have to make sure you find an MS that's intended to be a step toward a PhD, not one of the terminal, vocational MS programs. I would look for a substantial research or independent study component culminating in a mandatory thesis.
posted by d. z. wang at 10:09 PM on October 6, 2012

An alternative path might be to work as a research assistant and get a few publications under your belt that way. The Toyota Institute at Chicago does a lot of machine learning and often hires people this way, although I don't know if the pay would suit you (because I don't know what sort of pay you would need).
posted by d. z. wang at 10:16 PM on October 6, 2012

The way that you set this up makes me wonder if you understand how doctoral programs work.

The best possible program is one that is a match for you.

But think seriously about what your goal is and why you need a PhD to get there.
posted by k8t at 9:03 AM on October 7, 2012

What I really want to be doing is research, specifically machine learning/artificial intelligence.

What is your actual experience with computer science? Do you code in your spare time? Have you worked as a professional programmer/software engineer? Or is this just based on a bit of reading?
I think a professional masters program is your best bet, because it's incredibly unlikely you'll get into anything else without a serious background that it doesn't sound like you have. If you can get through the masters and kick ass, you can use that to get into a PhD program. Otherwise, you'll have the tools to get into the market as a working programmer. Or you'll flame out fast and save yourself the misery of years of academia in the wrong subject.

CS PhD programs mostly end up getting people into the same jobs that they get with BS and MS degrees. Very few of those PhDs actually go on to teach or research. So don't assume that you will get to do research by getting a PhD, or that you'll even want to after doing all the schooling. But most of the fun stuff happens in the real world anyway. That's one of the beauties of CS, the real work is in the practical applications of large systems to real problems.
posted by ch1x0r at 11:58 AM on October 7, 2012

Looks like I left out some details!

My end goal is to do research. As ch1x0r says, many people who get PhDs dont get to work in research. That's what is making me try to get into the best program; it's to improve my chances of getting research work after.

My CS/Research background is 2 years of undergraduate CS classes and a few of those free online courses you can download from Stanford, MIT etc. In highschool I interned 2 years at a chemistry lab, and in college I worked for 2 years (part time) in the materials science lab. I know that CS research will be quite different, and I need to learn more about it, but both research jobs were the only time I've felt content with my life being spent there.

Since graduation I've been working (approx 2 yrs) in welding engineering (and taking night classes in CS).

d.z.wang - I didn't know that CS M.S. was focused towards work and not research. Good to know. What would I need to bridge the gap from where I am now, to being a reasonable candidate for a research assistant? This is different from a graduate RA correct? As long as I earn enough to pay for living expenses and my student loans, I'm not too worried about money. I think helping advance machine learning is important for our world, and worth making sacrifices for.
posted by EthanAI at 1:07 PM on October 7, 2012

Let me reiterate: Nothing about your background sounds like it remotely qualifies you for a CS PhD program, let alone one that will end up with you doing research coming out of it. I've evaluated applications for people coming into graduate school and you would not make the cut. Where are you taking night classes? Do they have a masters/phd program? The best chance you have is to get into classes somewhere where you can impress the professors and get them to bump you into the full-time program. I think you're most likely to be able to do that by paying for a degree or getting a company to pay for a degree, but seeing as how you're not even working in CS, you're a long way from being able to get a company to pay for you to take classes.

You're very unlikely to get an RAship in CS, because you're unlikely to get accepted to programs where students are sponsored to such an extent as to be guaranteed an RAship immediately. Most other programs start grad students out as TAs who only graduate to RAships upon taking a class and sufficiently impressing the professor into bringing them on as such.

Nothing about CS research is remotely like working in a chemistry or materials science lab. At all. It's sitting in front of a computer, writing code, or maybe, sitting in front of a whiteboard thinking about algorithms. Basing a career path that will take you realistically 8+ years to see the end of from where you are now on enjoying some lab work in an unrelated field seems unwise at the least.

Anyway, as I said originally, I think you have one chance, which is to pay for a master's degree and kick enough ass in that program to get the profs to write you stellar letters to real phd programs or even let you in to theirs. There are plenty of good schools with professional master's worth considering including Stanford and CMU. You'll need letters of recommendation to even get into these, but the bar is lower. Good luck.
posted by ch1x0r at 3:08 PM on October 7, 2012

Woops, dropped this thread. EthanAI, I'm sorry to be unclear. When I said RA work, I meant that professors will sometimes hire undergrads at minimum wage to do simple tasks like port benchmarks from one language to another or write test programs. (My examples are biased toward systems and applied programming languages work because that's the kind of research I know.) For that sort of work, two years of undergrad classes is perfectly sufficient, assuming, of course, that you actually learned the material well and still remember it.

If you do well, most professors will recognize an opportunity to get better-than-minimum-wage work at minimum-wage prices, and gradually move you up to more challenging or ambitious projects with publication potential. He'll also write you a good reference to grad school, which will be worth more than all the money in the world.

This sort of work is completely different from a PhD candidate's RAship, which is basically a way to let grad students earn their stipends. Ch1x0r, who sounds much better informed than I, is completely correct when he says that nothing you've said so far would be interesting to a PhD admissions committee.
posted by d. z. wang at 11:20 PM on October 17, 2012

« Older Of making many books there is no end   |   Customizable fitness gamification, or other ways... Newer »
This thread is closed to new comments.