You don't need a 4.0 to go to grad school

composition.al 2018-08-01

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 ensued from Justine’s original tweet, a couple of people expressed concern that doing a minor in another field would hurt their GPA and therefore damage 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
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 that 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.