Tips for non-traditional applicants to CS grad school

Why am I writing this? 

Transitioning from a "non-traditional" (non-STEM) field to Computer Science can be a windy road, and I applaud you for your courage in starting this journey! For some background: I did my undergrad in human biology / psychology, my masters in education, and my PhD in computer science. I had no mentors in CS and I was the first in my family to attend college, so I did not think to take any CS courses in undergrad. It was only several years out of college when I became interested in human-computer interaction, and (with a lot of luck and mentors I found along the way) transitioned to a career in CS.

Since then, I’ve received questions from people around the world asking how to apply to CS graduate programs, given a non-traditional undergrad background. If there’s anything I’ve learned, it’s that we need more people like you in computer science -- people who can think from multi-disciplinary perspectives, to advance the field of computing towards improving human lives. I hope these tips help demystify the application process, and that you feel a little more empowered to take the leap.

Tip #1: Use your non-traditional background to frame your personal statement (it’s a strength!)

Your non-traditional background means you bring in strengths from other fields, which is actually a plus! Most of the hundreds of other applicants will have STEM backgrounds, and their applications will talk about CS-related motivations for pursuing grad school. Rather than trying to “out-CS” the traditional CS applicants, you’ll want your statement to stand out in a different way -- and hopefully get you bucketed into the “unusual but interesting” pile somehow.

You can differentiate yourself by starting the essay with a motivational problem in your own (non-CS) field, e.g. education, environmental studies, medicine, english literature, etc etc. For example, I started with a 1-sentence anecdote about seeing my French language teacher use digital technology for the first time in the classroom. 

In the introduction, briefly state your initial motivations for addressing an important problem from your field (e.g. education, climate change, etc.), then transition into how you became motivated to learn CS to solve those problems, what you did to pursue those avenues, and why you are now pursuing a graduate degree in CS. Ideally, you should emphasize how a CS degree would enable you to ultimately address problems you saw in your original field (education, climate change, etc.), to bring it full circle. In addition, you could tie your interests to a specific sub-field of CS that’s relevant to your background (e.g. human-computer interaction, ethical AI, computational biology, etc.) 

Then, your body paragraphs should deep dive into each of those topics mentioned above. For those applying to PhDs, these paragraphs should focus primarily on research you have done. Ideally, each body paragraph should describe a self-contained research project: why it was important/challenging, how you went about solving the problem, and what the eventual impact was (e.g. publication, poster, seminar talk, real-world impact, something you learned, etc.) Even if your project is in a non-CS field, CS profs will want to see that you “know” how ot summarize your research well. That means that, rather than rattling off a laundry list of projects all in a single paragraph, you’ll probably want to dive deep into one project per paragraph.

I had relatively limited research experience, but here’s a rough breakdown of what I wrote in mine:


Tip #2: Highlight your CS and STEM coursework in a separate list

Everyone is required to attach a transcript of prior courses. However, since my transcript was full of humanities/social science courses, it would have been far too easy for any STEM courses I did take to be easily overlooked. So I also included a separate list of STEM and CS courses, to highlight them in my application. This helps draw attention to and amplify your technical merits!


At the time I applied, I had taken 4 STEM courses total (include your grades here with each course, especially if the grades were good!)

I also added to the list a number of courses I was currently taking (so no grades yet) and planning to take next semester:


Notice how, even though I had taken only ONE “regular” computer science course at the university level before applying, this list shows a deeper level of preparation.


Tip #3: Letters of recommendation & doing research with faculty 

(particularly important for PhD applicants!)

It is helpful to know that many professors within a subfield (e.g. human-computer interaction, or compilers) already know each other, especially at top universities -- they have seen each other at conferences, probably cited each other, written grants together, or heard of each other’s work.

When a professor reads your application, it helps a LOT if they a) recognize the name of who’s writing the letter, and b) have a high regard for that person’s research. This means that, as much as possible, all 3 of your letters should be from professors/faculty who are well known in their field. If you’re coming from a non-CS field, then the professor writing your letter will likely be from another field, and may not be well known by CS professors. Many professors start their letter with a description of their credentials in their field (e.g. awards, tenure, merits of their past students, etc.) In the case of non-CS letter writers, this section is even more important, to help contextualize their merits to CS professors reading your application. The idea is for them to communicate that they have enough seniority and experience in their field to recognize truly outstanding students. You’ll also want to explain to the letter-writer how your early research experience with them inspired you to eventually pursue CS, so that they will hopefully echo that in their letter.

In some cases, you might also be able to find opportunities to do research in CS departments to begin with. One way to approach CS faculty is by highlighting your subject expertise as a strength (rather than talking about your limited exposure to CS). For example, given my masters degree in Education, I found two professors working in CS Education, and highlighted to them my interest in CS Education and my extensive experience in education-related projects. That way, they see that they can benefit from your expertise, while you get exposure to CS research.

Additional notes regardless of your field:

You may be wondering what to do if you’ve worked closely with a graduate student or postdoc on a research project, but don’t know the professor as well -- should the professor write the letter, or the grad student / post-doc? This is an interesting trade-off, because the person you’ve worked most closely with can best attest to your research potential, but (whether we like it or not) the professor’s name is the one that will be recognized. One way to handle this is to ask the professor for the letter, and suggest that the grad student / postdoc you worked with provide a few paragraphs which the professor can optionally quote. This hybrid approach not only helps you, but is also helpful to the professor because it gives them some raw material to start with. You should probably ask the grad student first if they’d be OK with this though, since they will be doing the bulk of the work.

Faculty are usually juggling numerous tasks, students and rec letters. Their attention is divided, so it’s important to stand out to the people writing your letters -- if you don’t already have a personal rapport with the letter writer, find a way to get to know them better. For example, you can attend their office hours, ask them questions after class, ask for a 30-minute meeting/phone chat with them, etc. If you ask to meet with them, I’d suggest listing 3-5 times you’re available in that email, to save them the hassle of having to make open-ended scheduling decisions. Lastly, you could help guide the letter writer by sending them a doc reminding them of the research you’ve done with them, highlighting aspects of your contributions that were unique (they will likely be writing lots of letters for many students).


Tip #4: After being admitted

A PhD is a long time (typically 5-7 years!) As tempting as it may be to dive straight into research, taking the time to develop your fundamental CS skills can pay long-term dividends for your research and career.

If you have choices of where to go, now is the time to talk to potential advisors candidly about your background and needs, to “catch up” with CS/programming knowledge in the beginning, and get a sense of how enthused they are about it. Better to find out earlier rather than later! Also, since they’ve admitted you already, you can consider more candid conversations at this time, like asking them why they felt you stood out, or how they feel you can uniquely contribute to the lab. They must have had some reason to pick you out amongst all the applicants.

At the time I was admitted, my future advisor asked if I would like to spend the first semester or so catching up on these fundamentals by taking a few undergraduate CS courses. This was one of the best pieces of advice I’ve ever gotten, and few advisors will suggest this because they usually want you to start producing research. So I would highly recommend discussing this with your future advisor or graduate program before deciding where to enroll.

In my first year at MIT, I took undergrad courses in software engineering, algorithms, web programming, data structures. This meant that I did less research, relative to my 1st-year PhD peers. However, the short-term time sink paid off in the long term. I have classmates who said they wished they had taken the time to get the fundamentals down before going full-steam on research -- by the time you’re in year 3, 4, and 5, you are expected to be very dedicated to research and spending lots of extra time on courses may be frowned upon, so use your 1st-year wisely to catch up on fundamentals. For me, it was also fun to do class projects with brilliant undergrads who never seemed to run out of energy!