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.
Page: 1 of 1 GRINNELL COLLEGE December 01 2006 Lindsey A Kuper 0180202 XXXX-XX-XXXX COURSE Title CRD GRD ------ ----- --- --- Fall Semester 2000-01 TUT 100 Insprtn for Mus Strctrs & Lit 4.00 A- ENG 121 Intro to Shakespeare 4.00 B+ MAT 131 Calculus I 4.00 B ART 103 Intro to Art & Art History 4.00 A MUS 101 Grinnell Singers 1.00 S Term GPA 3.50 Credit 17.00 Cum GPA 3.50 Credit 17.00 Spring Semester 2000-01 AMS 130 Am Beliefs/Cultr Val 4.00 A- MUS 112 Harmony 4.00 A MUS 101 Grinnell Singers 1.00 S ENG 107 Fund of Lit Analysis 4.00 A- MUS 116 Mus/Culture/Context 4.00 A Term GPA 3.84 Credit 17.00 Cum GPA 3.67 Credit 34.00 Fall Semester 2001-02 MUS 215 Intro to Composition 4.00 A- HIS 112 American History II 4.00 B CSC 151 Fund of Comp Sci I With Lab 4.00 A MUS 101 Grinnell Singers 1.00 S AMS 225 Thry/Mthd in Amer St 4.00 A Term GPA 3.67 Credit 17.00 Cum GPA 3.67 Credit 51.00 Spring Semester 2001-02 MUS 219 Electronic Music 4.00 B+ MUS 262 Eur Trad 1800-Presnt 4.00 A- MAT 133 Calculus II 4.00 C CSC 152 Fund of Comp Sci II With Lab 4.00 A- MUS 101 Grinnell Singers 1.00 S Term GPA 3.17 Credit 17.00 Cum GPA 3.54 Credit 68.00 Fall Semester 2002-03 MUS 261 Eur Trad 1550-1800 4.00 A- MAT 215 Linear Algebra 4.00 B- CSC 213 Oper Sys/Paral Algor w/lab 4.00 C MUS 101 Grinnell Singers 1.00 S MUS 220 Perf: Adv Piano 2.00 B+ Term GPA 2.86 Credit 15.00 Cum GPA 3.42 Credit 83.00 Spring Semester 2002-03 CSC 195 IntSpTp: Data, Storage, C Prg 4.00 A- CSC 223 Software Design 4.00 A MAT 218 Combinatorics 4.00 B MUS 101 Grinnell Singers 1.00 S Term GPA 3.56 Credit 13.00 Cum GPA 3.44 Credit 96.00 Fall Semester 2003-04 CSC 301 Algorithms 4.00 B+ PHY 131 General Physics I w/lab 4.00 A- MUS 101 Grinnell Singers 1.00 S MUS 295 SpTp: Intro/Jazz Arng & Comp 4.00 A- MUS 220 Perf: Adv Voice 2.00 A Term GPA 3.62 Credit 15.00 Cum GPA 3.46 Credit 111.00 Spring Semester 2003-04 CSC 341 Auto,Frm Lng,Cmp Cpx 4.00 A CSC 302 Program Lang Concepts 4.00 A MUS 101 Grinnell Singers 1.00 S MUS 495 Senior Project 4.00 A Term GPA 4.00 Credit 13.00 Cum GPA 3.52 Credit 124.00 ---------------------------------------- Degree: Bachelor of Arts 05/17/2004 Major(s): Music Computer Science Honors: Music ----------------------------------------
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.