Recently on Twitter, Justine Sherry pointed out (in response to hearing about a student afraid to minor in art because they thought it would hurt their applications to computer science Ph.D. programs later) that she’s actually more likely to hire prospective students into her lab at CMU if they have a minor in something “interesting and unrelated” to CS. Her tweet prompted a lot of lively discussion; my colleague Peter Alvaro added that for him, the same policy applies to majors, and I jumped on board with that and pointed out that I don’t think that any other field is actually “unrelated” to CS anyway.
In the conversation that followed Justine’s original tweet, a couple of people expressed concern that taking her advice would have hurt their GPA and therefore damaged their CS Ph.D. application prospects. In fact, one person (who I won’t link to, because I don’t want to pick on them personally) wrote that they would have wanted to minor in another field, but didn’t because “anything under a 4.0 is DOA for CS grad school”.
Is it? As so often, we can turn to Mor Harchol-Balter’s advice on applying to Ph.D. programs in CS for trustworthy information. Here’s what she says:
When applying to a Ph.D. program in CS, you’d like your grades in CS and Math and Engineering classes to be about 3.5 out of 4.0, as a rough guideline. It does not help you, in my opinion, to be closer to 4.0 as opposed to 3.5. It’s a much better idea to spend your time on research than on optimizing your GPA. At CMU the mean GPA of students admitted is over 3.8 (even though we don’t use grades as a criterion), however students have also been admitted with GPAs below 3.3, since research is what matters, not grades. A GPA of 4.0 alone with no research experience will not get you into any top CS program. […] At CMU we receive hundreds of applications each year from 4.0 GPA students who have never done research. These are all put into the high risk pile and are subsequently rejected.
As further evidence that you don’t need a 4.0 to go to grad school, I offer my transcript for my undergrad degree in computer science and music. I’m not holding myself up as some sort of ideal candidate for CS Ph.D. programs — far from it! — but I did manage to get into grad school with these less-than-stellar grades.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
In the end, my undergrad GPA was just a hair over 3.5 — slightly higher than that in CS, and considerably lower in math. A few things to note about my undergrad experience:
- I didn’t start studying computer science until my second year, in fall 2001. Before starting CS, I’d figured out that I wanted to do something more than just a music major, but I wasn’t sure what the “something more” should be. I took intro CS (which was taught in PLT Scheme, the predecessor of Racket) on a whim; it turned out to be the coolest thing ever, and I secretly decided to major in CS. For a long time, I didn’t tell anyone what I was doing, because I was afraid I wouldn’t succeed. Specifically, I was worried about the math prerequisites. At that point, I’d only taken Calc I, and there were three more math courses I’d have to take (Calc II, Linear Algebra, and Combinatorics) before I’d even be eligible to take Algorithms, which all CS majors had to take.
- 2002 sucked. I hated the second CS course, which was taught in Java, the polar opposite of PLT Scheme. I got a C in Calc II, a B- in Linear Algebra, and a C in Operating Systems (which was inexplicably also taught in Java). My GPA dropped down to 2.86 for the fall 2002 term. Even my parents, who were usually very hands-off, were like, “You need to bring your grades up.”
- Things got much better in 2003. “IntSpTp: Data, Storage, C Prg” was a weird special topics course that was only ever offered the one time. I don’t think most students were into it, but I thought it was great! Half of it was about writing C, which was kind of fun, and half of it was about Hoare logic and axiomatic semantics, which I loved, although it was hard. Meanwhile, after struggling through calculus and linear algebra, combinatorics finally clicked with me.
- Everything came together in my last semester, which was spring 2004. I adored my theory-of-computation course. Writing proofs was fun. For me, an important moment came during my PL course, when we came back to some of the Hoare logic material that I’d studied previously. The second time around, I found that not only did I still enjoy it, it was no longer nearly as hard as it had been before! “You’re good at this”, some guy in my class said. That was pretty much the first time a classmate had told me I was good at something CS-related, and it had a direct influence on my deciding to go to grad school. I thought that maybe, if I was able to become good at something in CS when given enough time to go over the material more than once, then I might have the chance to become really good at something in CS if I had multiple years to scratch the itch.
Perhaps it’s worth noting that I never took undergrad courses on computer architecture, compilers, distributed systems, AI, machine learning, robotics, statistics, networking, security, cryptography, or graphics. I filled in a few of those gaps in grad school, but not even close to all of them. Some of them I’m only now beginning to fill in, and others I’m not sure I’ll ever get to. If you evaluated me according to what Matt Might says every CS major should know, I’d get a failing grade. (Thankfully, Matt also identifies being good at failing as a predictor of success in research.)
Anyway: in grad school, as in the rest of life after undergrad, grades aren’t very important. What matters in grad school is research, and applicants who demonstrate an understanding of what does and doesn’t matter will be at a great advantage to those who don’t. I might even go so far as to say that a 4.0 undergrad GPA could be something of a liability on grad school applications, because it could make an applicant appear to be someone who pursues a high GPA for its own sake as opposed to pursuing more important things and being willing to fail at them. In any case, the possibility of getting low grades is a bad reason not to study something you’re interested in.