Applying to Graduate School in Computer Science

So you’re thinking of grad school. Four years of undergrad is not enough for you and you’re craving for more knowledge. Or perhaps you want to delay your entry into the “real world” for a couple more years. Well, grad school is the right place!

About a year ago, I decided I wanted to do grad school. However, most of my peers were on track to work in the industry after graduation. The process of applying for grad school is daunting, especially since it varies from country to country and from one subject to another. This is why I am writing a guide to grad school applications in Computer Science, for Canada and the USA: a compilation of things I wish I knew a year ago.

Why grad school?

People go to grad school for different reasons. Most people I know in computer science and software engineering plan to start working full-time — a reasonable choice, given the high salaries in the industry right now. I figured that I had the rest of my life to code for a company; there’s no rush to start working immediately.

Graduate programs come in three broad categories:

  1. Coursework Master’s. Typically about 1 year, this is basically an extension of undergrad. You take a bunch of graduate courses, which are more in-depth than undergrad classes, but you don’t do any research. This is useful for gaining more knowledge before going to work in the industry.
  2. Thesis Master’s. About 1-2 years, depending on the school. At first, you take some courses like in coursework master’s, but the primary goal is to produce a master’s thesis, which is equivalent to about one conference paper of original research. This is a good way to get some research experience, without the time commitment of a Ph.D (and is valuable as a stepping stone if you do decide to get one).
  3. Ph.D. A longer commitment of 4-5 years. In a Ph. D., you produce an extensive amount of original research; by the time you write your thesis, you will be a world expert on your specific topic. I like this illustrated explanation of what it’s like to do a Ph. D.

There are hybrid programs too, like thesis master’s often transition directly into a Ph. D, and also there are regional differences on how these programs work (more on this later).

Can I get into grad school?

As you may expect, top grad school programs are very competitive, and a typical grad student is a top student in his undergraduate class. So what do schools look for in their grad school admissions process?

Grades are a big factor: generally, an undergrad GPA of 85% or higher is good for grad school (with 80% being the bare minimum). However, even more important than GPA is your research experience. Publishing papers in conferences would be ideal, and research experience can make up for a lackluster transcript.

Unfortunately, Waterloo students are at a disadvantage here: with the co-op program, most people spend their undergrad years focusing on internships rather than research, which is considered less valuable. Don’t be discouraged though: my only research experience was through two part-time URA’s, and I have zero publications, but I still got into a good grad school.

Picking a research area

In grad school, you specialize on a specific area of computer science, for example, machine learning, or databases, or theory, or programming languages. You have to indicate roughly what area you want to study in your application, but it’s okay to not know exactly what you want to research.

For me, I wanted to do something involving artificial intelligence or data science or machine learning. Eventually I decided on natural language processing (NLP), since it’s an area of machine learning, and I like studying languages.

Some people have a specific professor that they want to work with, in which case it’s helpful to reach out to them beforehand and mention it in your statement of purpose. Otherwise, as in my case, you don’t need to explicitly contact potential advisers if you have nothing to say; you get to indicate your adviser preferences in your application.

Choosing your schools

The most important thing to look for in a grad school is the quality of the research group. You may be tempted to look at overall computer science rankings, but this can be misleading because different schools have strengths in different research areas. There are other factors to consider, like location, city environment (big city or college town), and social life.

It’s a good idea to apply to a variety of schools of different levels of competitiveness. However, each application costs about $100, so it can be expensive to apply to too many — 5-10 applications is a good balance.

I decided to apply to five schools: two in Canada and three in the USA. My main criteria were (1), a reputable research program in NLP, and (2), I wanted to live in a big city. After some deliberation, I decided to apply to the following:

  • Ph. D. at University of Washington
  • Ph. D. at UC Berkeley
  • Ph. D. at Columbia University
  • M. Sc. at University of Toronto
  • M. Sc. at University of British Columbia

I didn’t apply to the University of Waterloo, where I’m doing my undergrad, despite it being pretty highly ranked in Canada — after studying here for five years, I needed a change of scenery.

Differences between Canada and USA

You might have noticed that my three applications in the USA were all Ph. D. programs, while my two in Canada were master’s. Graduate school works quite differently in Canada vs in the USA. In Canada, most students do a master’s after undergrad and then go on to do a Ph. D., but in the USA, you enter into Ph. D. directly after undergrad, skipping the master’s.

There are master’s programs in the USA too, but they are almost exclusively coursework master’s, and are very expensive ($50k+ tuition per year). In contrast, thesis master’s programs in Canada and Ph. D. programs in the USA are fully funded, so you get paid a stipend of around $20k-30k a year.

A big reason to do a master’s in the USA is for visa purposes: for Chinese and Indian citizens, getting the H1-B is much easier with a master’s in the country, so the investment can be worth it. Otherwise, it’s probably not worth getting a master’s in the USA; studying in Canada is much cheaper.

If you go to grad school in Canada, you can apply for the CGS-M and OGS government scholarships for master’s students. Unfortunately, Canadian citizens are ineligible for most scholarships if you study in the USA.

Taking the GRE

Another difference for the USA is that the Graduate Record Exam (GRE) is required for all grad school admissions in the USA. This is a 4-hour-long computer-administered test with a reading, writing, and math component. If you’ve taken the SAT, this test is very similar. For grad school applications in computer science, only the general exam is required, and not the computer science subject test.

The GRE plays a fairly minor role in admissions: a terrible score will hurt your chances, but a perfect score will not help you that much. The quantitative and verbal sections are scored between 130-170, and for science and engineering programs, a good score is around 165+ for quantitative and 160+ for verbal.

The quantitative (math) section is a cakewalk for any computer science major, but the verbal section can be challenging if English is not your native language. It does require some preparation (1-6 months is recommended). I studied for a month and did quite well.

Applications are due on December 15 for most schools, so you should take the GRE in October at the latest (and earlier if you plan on taking it multiple times).

Letters of Recommendation

Most grad school and scholarship applications require three letters of recommendation; out of all requirements, this one requires the most planning. The ideal recommendation comes from a professor that you have done research with. If you go to Waterloo and are considering grad school, doing a part-time URA (undergraduate research assistantship) is a good way to secure a few recommendation letters.

It may be difficult to find three professors that you’ve worked with, so the next best thing is a weaker letter from a professor whose class you did well in. As a last resort, at most one letter may come from a non-academic source (like your co-op supervisor). I was lucky that one of my research projects was co-supervised by two different professors, so I got two letters that way.

Statement of Purpose

The statement of purpose is a two-page essay where you describe your academic history and research interests, and convince the admissions committee that you are the ideal candidate to admit. If you have internship experience, talk about what you learned any why it’s relevant for research.

Chances are that the first revision of your statement of purpose will suck (this was certainly the case for me), so get friends and professors to proofread it. After several revisions, here’s my final statement of purpose.

Offers of Admission

That’s about it — after you hit submit on all your applications by December 15, you can sit back and enjoy your final semester. With any luck, you will receive this in your inbox around the beginning of February:


In the end, I got accepted to both master’s programs in Canada (UBC and UofT), but got rejected from all three Ph. D. programs in the USA (Washington, Berkeley, and Columbia). I chose to accept the UofT offer, where I will study NLP starting this fall.

Hopefully this guide has been helpful, and good luck with your applications!

17 thoughts on “Applying to Graduate School in Computer Science

  1. Damn! I started following your blog long ago and used to think that you’re a middle aged experienced programmer who blogs in his free time. Turns out you’re younger than me! I started my Masters in Computer Science in last year.

    Congratulations! UofT is a great school. One of my friends will also be joining UofT this fall as a PhD student in Computer Vision.

    Good luck! Hope you find grad school fun 🙂


  2. This is a great blog! Thanks so much for the details on your experience. I was wondering whether you have any idea about how much of a requirement the GRE general test is? I studied EEE in Singapore and have been working in data engineering/science for about 4 years now. I want to apply to the M.Sc program in CS in Canada, with UofT being my top choice. Since I’m not applying to US schools at all, and UofT, while recommends, does not require GRE, preparing for it does not seem to be the most efficient use of time, time that I can possibly use for writing SOPs and preparing for grad school. The other reason for not being sure about writing GRE is that I’ve been extremely occupied at work this year and had not the chance to invest time for GRE either. I would really love to know what you think about this. Thanks so much!


    1. Generally, whenever something is optional on the application, it’s not weighted very heavily. If you’re 100% sure you’re not applying to US schools, then you don’t need to take the GRE.


  3. This is an amazing blog. I am applying for grad studies (MSc) in Canada for fall’18 and UofT is my dream college. I want your opinion on whether mentioning the name of the professors and the work they have done on the SOP adds more value as compared to an applicant who writes a generic SOP for all the universities?


    1. Mention it if there’s a particular professor whose work is especially interesting for some reason. Otherwise if you’re going to write something generic anyways, it won’t make a difference whether you mention names or not.


  4. Hi there, thank you so much for this blog, I’m in Canada as well and trying to apply for Masters in Computer Science right now. I really want to get into UofT but I heard it’s really hard. Your statement of purpose is a great help, but I’m just wondering if you could share your resume for the grad school application with me? If it’s ok please email me at but It’s perfectly fine if you don’t want to. Thanks anyway.


    1. You can find my resume linked on the “About” page of this blog. It’s more recent than the copy I submitted to grad school applications so it’s not exactly the same, but it’s quite similar.


  5. I am applying to PhD programs for Fall 2020 in the USA and your post has really helped. I Am applying to exactly the same field and I even share similar interests in NLP. I might be applying to University of Toronto as well.


  6. Hi OP. Thanks for posting this. I have two questions for you {I am an incoming CS student at waterloo}:
    1. How can I receive a URA offer at waterloo or if possible surrounding universities ?
    2. You mention theory as a research field in Computer Science, can you please explain what does field that entail ?


    1. At Waterloo a lot of profs post URA positions at the beginning of every term, you can apply then. It’s easy to get one, if you have over 80% GPA.

      There are many different subfields of theoretical CS, among which are complexity theory, computability theory, automata theory, formal logic, etc. My first research paper was in automata theory, and you can find a high-level overview of it here:


  7. Hello Bai,
    I found your post informative! I am applying to graduate schools right now, and simply have more questions:
    1. How did you identify which professors you want to work with (besides simply reading their research interests, and probably skim through their research papers).
    2. Did you find the writing centre helpful in proofreading our statement of purpose?


    1. For me, I didn’t have any specific preferences on professors to work with, I just knew I wanted to do NLP, so I just looked for the NLP researchers at each school I applied to. This is probably the case for most students. The exception is if you’ve worked with a professor during your undergrad research and want to continue working with them, or if you have a very specific research interest (eg: NLP for healthcare in the case of my advisor).

      I’ve never tried the writing center, but gave my SOP to a few grad student friends to look over. They found a lot of improvements, but the issues were less about grammar and more about what points to emphasize for the admissions committee, and a general purpose writing center might not be so familiar with that.

      Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s