Advice for incoming Computer Science undergraduates

This is copied verbatim from a email I sent to a student who was preparing to enter their first year as a Computer Science student at UMass Amherst and was looking for advice. Some of the names are specific to UMass, but the advice is generally applicable. I have reproduced it here in the hope that it will be useful to others.

Where to live?

Orchard Hill. Try to join the CS RAP (Residential Academic Program) or if you’re Exploratory Track CS, there’s an Exploratory CS RAP. Surrounding yourself with and befriending other motivated CS students will motivate you and make you perform better.

How to do well in class?

Always go to class, sit in the front row, ask questions if you do not understand. The professors appreciate that you care and are trying to learn and will remember you for it. This goes doubly so if you constantly associate with a group of people who act the same (see: Where to live?).

What should I do outside of class?

Do lots of projects. Build random things. Learn new languages. Play with cool technologies. Apply the things you are learning to stupid stuff you think would be fun to build. This will develop your skills and provide projects you can put on GitHub and reference on your resume.

As part of this, participate in hackathons. HackUMass and HackHolyoke are great venues because they’re close but they still have a wide array of companies recruiting at them. The dirty little secret about hackathons is they’re mostly about technical marketing; the ideas can be outright stupid but the Secret Formula To Always Win™ is to have one component you built yourself from scratch that has technical depth and aggressively hype that component during your presentations.

What non-obvious things should I know about being a student?

Your reputation matters tremendously. This doesn’t mean pretending you know everything or asking questions just to seem smart; in fact, it means the exact opposite. Professors, and the students that matter, can delineate the genuine article from an imitation; if you focus on constantly trying to grow and improve, your competence and expertise will speak for themselves and you will be noticed. It is very common for students to pursue the aesthetics of success without trying to attain the competence and mastery that lead to success. This materially manifests itself in a variety of ways, from lying on their resume to abusing buzzwords to blaming the class/professor for their failures to caring only about class grades rather than understanding the material (by either outright cheating on homeworks or using materials like Chegg to get the answer instead of figuring it out and learning).

This reputation matters because it gets you things. Professors talk about the students they remember, and they remember three types of students: really good students, really bad students, and the students who went to all their lectures and were engaged (usually this has strong overlap with the really good students). If you ask a professor to do research with them, that professor will ask around about you and, if you have a positive reputation, they’re almost certainly going to agree. If you are an unknown quantity, there’s a much higher chance they will turn you away. If you want to become an undergraduate TA (you should), the program coordinators are students and having a positive reputation will make it much easier to not only get selected, but get selected for the class you want to TA.

How do I get internships?

The first thing that matters is your resume. A lot of people use templates online with a lot of color, bizzare formatting, and lots of fluff, all in the name of “style”. The reality is it makes your resume impossible to read. Here’s the resume I landed a Google internship with my freshman year (Link: http://vedder.io/misc/KyleVedderResumeHighSchool.pdf). Notice it’s simple (I did it in Google Docs), structured, and easy to follow top to bottom. This will allow recruiters to better skim your resume and be more likely to call you in for an interview.

If you have no prior internship experience, you’re going to struggle to get an internship. You should go to things like career fairs, but most medium to large companies there simply take your resume and deposit it in a pile to be processed later. If you want to get that first summer experience as a freshman, I recommend you target smaller companies and do not volunteer the fact that you are a freshman. They are more likely to remember your one on one interaction and they are typically more willing to hire interns without prior experience.

Irrespective of your prior experience level, the key to actually landing an internship is passing the technical interview. A lot of people say “read Cracking the Coding Interview and grind LeetCode for a million hours” but I think that’s myopic. I’ve done none of the above; instead I did lots of projects (see: What should I do outside of class?) and these taught me the same skills, but with the added benefit of having actually built something real that I can put on my resume and GitHub page. Note that this advice is in stark opposition to the orthodoxy so there may be some merit in ignoring it if it doesn’t work for you.

Closing remarks

A lot of people are obsessed with CS because they want to land a software engineering job. They see the six figure salaries, they see the high status startups, they see cool buzzwords like “deep learning” and “neural networks” being added to tech products and they want a piece of the action.

There’s nothing wrong with wanting to do that. But that’s not Computer Science. Software Engineering is a vocation that leverages concepts from CS to build things. However, CS is the study and development of these useful concepts. For example, consider Generalized Additive Models (GAMs); this model was developed by computer scientists to be interpretable and work well in practice without strong assumptions, e.g. Gaussian noise in OLS. GAMs are now being used by scientists to show that COVID’s transmission rate is stable to increasing temperature above a certian threshold, but roughly linear below that threshold1 (sadly, this suggests COVID will not magically disappear this summer). Keep an open mind as to what you will do after you graduate. Realize that, if you pay attention in class, Computer Science equips you with skills far beyond how to code so you can get a job getting people to click on ads or at a Machine Learning startup buzzword factory burning VC money like it’s the Papiermark.


  1. Prata, Rodrigues, Bermejo. Temperature significantly changes COVID-19 transmission in (sub)tropical cities of Brazil. Science of The Total Environment. 2020.↩︎