
Ask HN: Getting accepted into a top level CS program. - ncarlson
Hi everyone,<p>I'm about to receive my BA in Mathematics from a lowly state university. Eventually, I'd like to continue on and work towards a masters and PhD at a top school like Stanford or MIT. However, I'm not interested in applying to one of these school at the moment. I'd like to wait at least 5 years.<p>Here are my questions:<p>1. How long should I wait? And does the length of time I wait to apply matter?<p>2. During this time that I'm in the workforce, what should be my focus? Publications, open source contributions, industry experience? I'm obviously going to continue the work that I enjoy doing. However, if there is a benefit to adding focus to a particular outlet, I'll do so.<p>3. Code monkey jobs are plentiful. I can get a high paying job in the finance industry maintaining a Java/C++ code base. But I doubt I'll be happy in this type of position. Should I take the time to find a research based position at a company like IBM or HP?<p>4. Does status in the software community affect acceptance into a CS program?<p>Thank you for taking the time to answer.<p>Nick
======
jayp
To be frank about it: with a 5+ year break and coming from a "lowly" state
university, it is going to be tough to get into the type of CS PhD programs
you have listed.

Most schools do run a low pass filter on your GRE scores (if required) and
GPA. The GPA is weighted according the repuation of your school. However, once
you get beyond the filtering, these things don't matter.

The most important thing at a top PhD school is letters of recommendations
from faculty, with the greatest weight given to letters from a professor they
might know. ("They" being any of the members of the admissions committee who
happen to read your file, or are present during the discussion. There is a
fair amount of luck involved). This maybe hard for you to get if the
professors at your current university do not publish (i.e., attend
conferences, etc.). However, no matter what, do keep in touch with them.
You'll need at least 2-3 letters from them. Letters from work will be fine,
but do not carry heavy weight -- especially beyond one letter.

The other relevant things include: the school you attended, research
experience (publications are your greatest asset), and lastly, your statement
of purpose. I don't think anything else really matters too much -- at least to
a top CS program.

But if you really want to go to grad school, there is always a way. Some tips:

(1) Apply to a lot of schools, as the admissions process can be fairly random.
However, do not apply to safe schools for the sake of applying.

(2) Also, an alternative is to apply for a Masters program. Get in. Impress a
professor or two. Upgrade to PhD program. Obviously, it is hard to find
financial support for Masters student at some schools. If you are local to a
great university, you can also take graduate courses a non-degree student
(very easy to get in, as schools love money), impress one or two professors,
and apply.

PS: I served as a student representative on an admissions committee at UIUC in
the past. I also came from a "lowly" state university. However, I jumped to
PhD program directly after my BS.

~~~
siong1987
It is good to see someone from UIUC in Hacker News. Another UIUC student here.
I feel like want to keep you in contact but I could not find any of your
contact in your profile.

Feel free to shoot me an email. My email is in my profile.

------
bdr
These departments are not interested in your coding skill. All they care about
is your research ability in the area you're applying for. Software you've
written or worked on _might_ be relevant, but only if you're doing something
hard and/or novel. It's easier to imagine this for some areas (graphics) than
others (complexity theory). Overall, I imagine that very few programming jobs
would be valuable on your application.

Also, note that the top-tier programs generally don't have academic Master's
programs. Stanford offers one but it's career-oriented.

------
raffi
I don't know anything about applying to PhD programs. I would like to add
something to point three though:

You could grab a research position with the government. Lincoln Labs at
Hanscom AFB is associated with MIT for example.

If you work a few years as a program manager or bench scientist in the
government civil service, you will network with prominent folks and have a
chance to gain their respect. After all--where do you think that research
money that professors love so much comes from?

I had a positive experience. I was able to network with people who wrote
papers I really liked. One particularly touching experience--months after I
left, someone contacted me to let me know that a Professor whose work
influenced me quite a bit would be in town. I was (as an outsider) given a
slice of his schedule to meet with him and have lunch. Its like a family, once
you're in... you're in.

------
kcy
I think you have about 1 year in industry before your academic cred is used
up. _Generally speaking_ , a research position in a company like Google, IBM,
HP, etc. is definitely more in-line with what the admission committee will
understand and respect than a code-monkey job at a web 2.0 startup or in
finance. I think these latter sorts of jobs hurt your chances of getting into
a highly respected academic program, though they may make you a better
entrepreneur. I think status in the software community (e.g. at HN or in the
open source world) matters little unless someone on your admission committee
knows what that status means. My experience has been that many university
professors at Stanford and MIT have no clue about this sort of stuff (though
of course some are very well-informed).

You should probably ask your current professors for letters of recommendation
now and have them sent to your registrar so they can be forwarded on later
when you decide to apply. Unless you have a natural way to continue your
connection with your professors it will likely be very difficult to go back to
them even a year later and ask for the letter and have them remember you
(unless you were a super-star of course). Just get your letters done now. You
can always have them update the letter in x years if you feel there's
something relevant they can add. More likely than not you'll just be thankful
that you already have the letters since you never really maintained contact.
On the other hand, remember that the longer you wait, the more unusual it's
going to be for the admission committee to see a letter from so many years
back.

If you're really serious about wanting to get into one of those programs you
could actually move to Stanford/MIT and try to get a research position working
with some of the people in those departments. Or perhaps going to them and
asking if there's any companies they would recommend working at prior to a
graduate program.

------
jderick
I have to agree letters of reference are the most important factor. Of course
you need good GRE scores as well. Unless you do some academic research and
publish a paper or two before you apply (senior thesis at least), there is
little chance you will get into MIT or Stanford. A friend of mine prolonged
his undergrad for a year or two in order to work on some undergrad research
for a while and got into MIT that way. Of course, if you are willing to settle
for something other than a #1 school then you could get by without any
publications as long as you have an interesting class project or two that you
can talk about and you do well on your GREs (remember to study your
vocabulary). Programming experience will not help you get in. If you can find
some kind of research position, that would help, but it could be hard to find
a position like that at IBM or HP with your experience. A better bet would be
to look for a prof somewhere that does something you are interested in and go
work for him for a while (paid or not). Starting with a Masters is another
route that can work.

Also, I have to put a disclaimer here that getting a PhD will probably not be
worth it from a financial standpoint, and most likely you will not find a
tenure track position afterwards.

------
brent
(disclaimer: I attend a non - "top school")

0\. If you want answers as to what schools look for in students start by
looking at CV's of students in the department. More specifically, look at
students in the research areas you may be interested in. This is probably the
single best resource available to you. I knew my weaknesses (non top 10
undergraduate school, several years in industry, no undergraduate research
experience, relatively unknown letter writers, and a non-CS undergraduate
degree) and adjusted my expectations accordingly (ie I knew I wasn't going to
get in a top 10 school despite high grades, good industry job, and perfect
quant gre).

1\. 0 years. There are a number of reasons from familiarity with your letter
writers to the lack of commitment if you work in a non-research position.

2\. If you are working in a research position and could publish that is ideal.
However, I doubt this type of position will be available to you (usually it
requires a phd). In terms of acceptance I believe industry experience is
nearly meaningless. There are plenty of reasons to do it for personal reasons,
but look at the CV's of current students at the schools you are targeting and
look at how many of them worked between undergrad and grad.

3\. Again, a research position is probably the only type of position that will
help you in the admissions process. It may give you access to significant
letter writers, a chance to be an author, etc..

4\. I presume that status implies a significant contribution. This could help,
but unless the contribution is related to computer science it probably isn't
worth much.

Good luck.

edit :: a couple small updates.

------
yummyfajitas
Having gotten through this process for a Ph.D., albeit in a different field
(Math), I'll answer this as best I can. My answers relate to getting a Ph.D.

1\. Don't wait. Opportunity costs are low right now (bad economy) and waiting
hurts your chances. If you wait at least 5 years, you are > 27 when you start
grad school. You graduate at age 32. That's over the hill. Many grad schools
will flatly reject you for this reason.

2\. Publications might help, if they are solid technical works in peer
reviewed journals. Industry experience could also help IF it's hardcore R&D
work. Academics care relatively little about open source, unless you did
something truly awesome (e.g., FFTW).

3\. Yes. R&D type jobs are the only jobs that won't hurt you when applying to
grad school.

4\. GvR could probably get into a good grad school. Below that will probably
not help very much.

However, many places will give you a masters if you pay tuition. Don't expect
to jump from the masters to Ph.D. track, however.

~~~
plinkplonk
"You graduate at age 32. That's over the hill. Many grad schools will flatly
reject you for this reason"

I hope this isn't universal. I am planning to apply in 2010 and I'll be 38
when I do. Oh well one more wall to jump over, so what's new? :-)

~~~
whacked_new
I recently met a first year PhD who would be very well "over the hill." Top-
tier school. There's motivation for ya.

Of course, it could be an exception, but I'm sure admission was granted
without respect to age. As far as I know though, luck was a big determining
factor, and as such, I would look at a lot of these things (particularly if
you aren't a monstrously strong candidate) very lightly.

~~~
plinkplonk
"I recently met a first year PhD who would be very well o"ver the hill." Top-
tier school. There's motivation for ya."

Hey Thanks!

"particularly if you aren't a monstrously strong candidate"

Good Point.

A "monstrously strong" candidate is what I am trying to be. Hey if we ask
startup founders to be monstrously strong developers why not hold ourselves to
the same standards as grad students. The journey is very interesting, forcing
me to evaluate my deficiencies as a candidate and get better constantly.

A scientist I am working with on some research software said recently, "You'd
make a great PhD student at Carnegie Mellon" (where he got his PhD) and has
promised to write a reccomendation, so there's some progress. We'll see how it
goes.

------
foo23
When reading your app, professors are trying to tell one thing:

Will this person be a good academic researcher? To figure this out, they will
look at:

1\. Can you already do research? If you've published at academic research
conferences, they'll read your paper and judge you by it. If you have good
recommendations from people they trust, or are known in their field, they will
read those and rely on them heavily. Otherwise they view your application as a
crapshoot (why would they want to take on a student they're not sure will
succeed?)

2\. grades, programming abilities, and other things are all secondary. If they
pass the bar, that's good, but they're not going to get you in.

My advice: get a programming job working in a research lab, then apply to
places the people you're working with have worked with before. Look at MSR
(Microsoft lABS), Intel Research, and Google. Otherwise go to a startup.

------
timf
" _does the length of time I wait to apply matter?_ "

If you are doing things that are not academia oriented, the longer you do
those things, the less chance you will have at acceptance.

" _I'm obviously going to continue the work that I enjoy doing._ "

Careful, academia may not be right for you :-)

" _Publications, open source contributions, industry experience?_ "

Publications will by far trump anything else for most departments. And letters
of recommendation (preferably from people the department has heard of...).

" _Should I take the time to find a research based position at a company like
IBM or HP?_ "

This is probably the only thing that would realistically help you. You would
need to stay at one place long enough to contribute directly to refereed
papers, this will really help your application. There are a lot of research
positions at places that are not big companies, too, and those tend to submit
more papers. Often they are looking for staff programmers and you can "get in
on" some papers over time as you work hard and make good observations etc. Or
you could be the assistant who is writing the performance harness, etc.

The hard part would be getting in the door probably, in my experience anything
CS related will usually accept CS graduate students into internships etc. but
finding a full time job there with a BS and no previous CS research experience
will be tougher.

\---

Academic departments typically only care that you can code well enough to pass
their classes. You need to be able to program, for sure.

The better you are, the easier it will be to get through school -- you will
need all the time you can get in order to concentrate on algorithms, linear
algebra, etc. But it probably won't you help you too much at application time
(unless maybe you have won programming competitions).

" _Does status in the software community affect acceptance into a CS program?_
"

Probably not too much, unless the program is linked to a software product
(like where I work, the University of Chicago CS department and the Globus
grid computing community are intimately tied).

------
tjr
I received my bachelor's degree in 2002. I've been pondering graduate school
on and off, and have done a bit of graduate study online. While I can't speak
from the position of someone who is currently there, I can offer this with
regard to your first point...

It's been nearly seven years for me now. I've stayed only slightly in touch
with one of my undergraduate professors. I feel that getting academic
recommendation letters may be difficult at this point. If you're going to
wait, I would suggest maintaining conversation with the professors most able
to write letters for you.

------
fadmmatt
I got my Ph.D. in CS from Georgia Tech (I think it's #9 according to the joke
that is US News), and I'm a prof at the University of Utah. Here are my three
points of advice:

1\. PUBLISH! 2\. PUBLISH!! 3\. PUBLISH!!!

When I'm reviewing applicants for admission, I look at three things: (1) prior
research, (2) letters of recommendation and (3) personal statement. I look at
them in that order.

I don't care whether you came from MIT or Bumblefark State U. I don't care
whether your GPA was a 2.0 or a 4.0. I don't care whether your Math GRE is an
800 or a 600. I won't look at your transcript either.

I care _only_ about your _potential_ to do research with _me_. (Keep this in
mind when you're choosing which areas and which professors you'd like to work
with on the application; it _will_ determine who sees your application.)

My last piece of advice would be to consider a broad range of schools. The
rankings put out by US News are completely off base. Many "lowly ranked"
schools have deep strengths in particular areas.

Northeastern University, for instance, has an _outstanding_ programming
languages faculty, but they get no credit for it in the rankings.

I'll also plug the University of Utah as a great place to come for programming
languages/compilers, formal methods, graphics and scientific computing.

------
gaius
_I can get a high paying job in the finance industry maintaining a Java/C++
code base._

Ho ho ho. _After_ the ex-Bear and Lehman experienced coders find jobs, then
maybe the finance industry will start hiring entry-level coders again. Maybe.

Ask yourself tho' what you want from a PhD. It's not a "higher qualification"
in the sense that a MSc is, learning specialist knowledge to do a niche job.
It's an apprenticeship to become an academic. Where do you see yourself post-
PhD? What is the outcome you are looking to achieve here? Altho' grad students
may write an awful lot of code, no-one really cares about it - its only
purpose is to demonstrate theoretical ideas. Coding experience gained in
industry won't count for much. Not even Open Source coding. Computer Science
is as related to software development as Astronomy is to telescope
manufacturing. Working in a Carl Zeiss factory on the shop floor wouldn't
count for much applying for an Astronomy PhD would it?

------
blackguardx
Some people here are advocating jumping to a PhD with zero work experience. I
think this is a bad idea.

Getting a PhD involves very focused research. You want to make sure that you
will truly love the field before you go into it.

I strongly recommend that you take an R&D job at a well-known company if you
can. These large companies often sponsor research with top-notch universities.
You might be able to use these relationships to get in. My company's sponsored
research with Stanford allows me to work with a professor and grad student
there. That can't hurt during the application process.

Also, many of these large, research oriented companies will pay for graduate
education, although that will probably drop off as the economy tanks.

The only downside to getting a job at a large, research oriented company is
that these places are often cube farms that epitomize office space and dilbert
comic strips. I guess thats why you leave after a few years and go to grad
school

------
time_management
1\. 0 years is the optimal gap. Time off counts against you. If you want to do
this and don't see a strong reason for delaying, go in right now.

2\. You probably won't be publishing when you're working, and open-source
projects are good but not enough to put you over the cusp.

3\. If you can get a research position, that'll be better for your grad school
prospects than finance.

4\. I don't know the answer to this one.

Caveat: I was in a math PhD program for a year, and CS may be different.

