Lessons from the Run: Advice for the CMU CS Underclassman
My four years at CMU have been the best of my life.
I spent countless hours each week running through Frick Park, Schenley, and Southside. I love running, however long runs do get boring. During the past semester, I’ve been thinking of advice for the CMU CS undergrad while tramping down trails. I’ve collected that advice in this article, and it takes the form of running advice. Rest assured that it is has very little to do with running, and may be useful to any CMU CS undergrad.
0. You are only competing with yourself
Prospective students often ask during the student panel if they’ll be behind due to their lack of programming experience. I tell them that by second semester, we’re all on the same page. That’s a lie.
There will be someone in your class who is astronomically smarter than you. He/she will hit the top of the Autolab scoreboard before you start reading the assignment.
Don’t be intimidated; you are only competing with yourself. You no longer have to be the smartest person in the room.
1. Sprinting will only hurt your time
During my first months of training, my 5 milers in Schenely Park went as follows:
[Pace / Elevation Change]
[6:30 / -5] Aw yiss, gonna beat my record pace
[7:20 / -53] Flying down that hill was exhilarating. I am a god.
[7:56 / 40] I am the lame god Vulcan, and am about to be thrown from Mt. Olympus
[7:26 / -70] It’s easy to speed up when you’re falling down a mountain
[7:44 / 80] Fuck analogies. So exhausted. Should not have sprinted the first 2 miles.
This was a real run. And it didn’t help my training.
Let’s cut to the chase: Pulling all nighters will only hurt you. There’s a culture at CMU of being proud of all-nighters, and it’s stupid. You’re running a marathon, not sprinting down Flagstaff.
On a related topic, there’s no rush to take classes. The CS degree only has 3 years worth of required classes, so there’s no reason to sacrifice your learning by taking 15-213 and 15-210 at the same time.
2. Pace isn’t everything.
It’s easy to obsess over pace. Glancing at your watch every quarter mile… exerting yourself too much on inclines to ensure that you stay on target… beating yourself up when your times aren’t monotonically increasing
This is neither healthy nor optimal. A solid pace is a result of strong training and good form.
The same is true of GPA.
People who optimize for GPA make some terrible mistakes, including:
Choosing a minor that’s easy instead of one they’re interested in
Not forming strong friendships because they don’t have time
Taking an easy electives in order to maximize GPA
Optimizing for GPA will probably get you a good GPA, but little else. A better path is to optimize for learning. Your grades will be good as a side effect.
3. But pace is a pretty good indication of progress…
Grades don’t matter for CS majors… a line I was delighted to hear my freshman year.
Unfortunately it’s not true. Sacrificing your GPA during college, except for something really cool like a startup, is a stupid idea.
Most importantly, aiming for good grades will cause you to learn a lot. While an A is no indication of mastering course content, a C is an indication of misunderstandings. More ostentatiously, grad schools care about grades. Even if you currently don’t think you want to go, don’t ruin your chances if you change your mind later on.
4. Sometimes not training is the best training
Training hard the day before a long run is a bad idea. Swimming or biking on occasion can be far more beneficial than constant running. Every once in a while, it is helpful to not run.
The same is true for classes. Skip your boring classes. If you can better learn the material outside of class, then why waste time falling asleep at your desk? For me, this was true for most of the systems and applications electives.
This advice is tricky, so be careful. Only consider skipping classes where the majority of the learning is done via the homeworks, and not through lectures. And instead of skipping an assortment of lectures from several classes, consistently skip one class. Otherwise you run the risk of not being able to attend lecture because you’re so far behind.
By skipping 1 course per semester, I was able to stay heavily involved in ACM, maintain a relationship, and keep in decent shape. I certainly did learn less course content, but learned more overall.
5. Form your own routes
Because there are so few required classes in CS, you don’t need to follow the typical course sequence. Take interesting, different classes. In particular, take graduate level courses as an undergrad.
The mentality in grad classes is totally different, and the topics covered reach far closer to the cutting edge. You’ll learn a lot. As for grades… graduate classes have heavy grade inflation. Because graduate students can get kicked out for getting C’s, B- becomes the new D.
6. Try out different types of training
If I were to redo my summer internships, here’s what I would have done:
Freshman Year - Research
Sophomore Year - Startup
Junior Year - Big Company
It’s a good idea to figure out if you like research early on, since grad schools like to see more than just a few semesters of research. A startup is perfect for your sophomore year, because you’ll learn more about everything at a small company. And you should try a big company at some point before graduating, so why not do it junior year so you can get a cushy return offer to negotiate with?
7. The world is more flexible than you think
After running for a while, you start to treat signs and property boundaries as suggestions, not rules. A segment of the trail is flooded? Run on the side of the freeway. Need to cut your run short? Skirt through some backyards and a school.
Your course requirements are also more flexible than you think. I was able to get out of Interp by applying college credits from high school, and was able to replace Tech Comm with Writing for Economists.
Coming into CMU, I was determined to get an economics dual degree. It took 2.5 years to realize that economics was not for me. So with 3 courses left to get the degree, I exchanged the dual degree for a minor and started working on my MS degree instead. That's how flexible your academic track can be.
Your internships are also unexpectedly flexible. My team allowed me to spend a week working remotely in NYC so I could visit friends.
8. Beware of unsolicited advice
This article is heavily biased. Take it with a grain of salt.
Think it over, figure out what parts are useful and what parts are crap.
Let me know what parts are crap.