Thoughts on CS programs
excerpted from an email to a family friend
At least for me, the month of April (note: I wrote this in April but didn’t set up my site till June) is the time when your parents text you saying “so-and-so has a kid who’s a senior in high school, considering majoring in CS who has some questions, would you talk to them?”. I wrote a long email with some thoughts on the differences between large and small schools & their CS programs and figured I’d share. My email to one such family friend is below:
- Unless you go to Harvey Mudd, there aren’t that many small CS programs that are highly-ranked—and while I’ll be the first to say that ranking isn’t everything, there’s a significant benefit to attending top CS programs for 1) recruiting opportunities and 2) research quality. Berkeley and Carnegie Mellon [also Stanford and MIT] have connections to startups and smaller tech companies that don’t exist the same way at other schools. Their alumni are disproportionately represented at such companies, and it makes a big difference. I’m not saying people will just give you a job if you go to a certain school, but I think it does help with getting your foot in the door for interviews when people know you’re attending a top-rated program. Michigan is one step down from those schools: the startup connections aren’t as strong, but there are definitely Michigan alums all over. The nice thing about Michigan is that there’s a pipeline to the big tech companies: Facebook, Amazon, Google, Microsoft, Apple, etc - those companies will attend career fairs at Michigan the same way they go to career fairs at Stanford, Cal, etc. Michigan is, in their parlance, a “Tier One” school, which means it’s a priority school for recruiting. I’m not positive about [redacted for privacy] since I haven’t been involved with recruiting, but my guess is that they’re not; I’d bet that Tier One schools are roughly {UW, UCSD, UM, MIT, Stanford, Cal, CMU, UIUC}.
- Academically, one thing I didn’t think about [when choosing a college] is the breadth of upper-division coursework at the school you choose. Especially if you get involved with research, it’s important to have lots of options in what you specialize in. Smaller schools may not have enough faculty to teach a broad range of courses, but it matters a lot to have the flexibility to focus on say, distributed systems or operating systems or machine learning or embedded circuits. Your interests within computer science will change as you go through college and it’s good to make sure you have options.
- I’ve mostly said things in favor of them above, but large CS programs can be really hard and impersonal at times. I don’t have experience with smaller programs so I’m not sure what the experience is like there, but at schools like Berkeley and Michigan it can be hard to get institutional support. Classes will be large and it’ll be hard to get 1:1 time with a professor; office hours will be crowded and it’ll take time to get your questions answered. If you’ve found your existing math & science coursework easy so far, then you’re in a good position to make the most of a large program without feeling like you’re behind or lost. I didn’t find high school very challenging, so while Berkeley definitely was difficult for me, it also wasn’t so bad that I regretted my choice of school or major. If you feel that you needed support from teachers or a lot of structure in high school, then I think you’ll find a larger school more of a struggle. There’s nothing wrong with either; everyone learns differently and it’s important to make your choice of school with that in mind. Your fate is by no means sealed based on your high school experience, but if you feel you need more structure and support, then it’s even more crucial to find a good peer group early on, so you have friends in your classes to study and work with.
- Culturally, large schools are different from small ones, and I really liked Berkeley and Michigan for that reason. Both schools are basically in/adjacent to their respective cities, and they’re well-integrated with the area around them. I really enjoyed how close Berkeley was to San Francisco, because it was easy to break out of the “college bubble” and get away from campus. Hopefully you’ll be able to visit multiple schools and get a sense for what sort of campus you prefer.
- One thing that’s nice about a bigger school is the fact that students do things besides engineering; that’ll be true for all of your schools except maybe [redacted for privacy]. I really liked the fact that I had friends who were passionate about all sorts of fields at Berkeley and got to know folks outside of my subject area.