Today, I got a message on Reddit that really took me aback. For a little bit of context, there was recently a post on Reddit’s CSCareerQuestions community about Berkeley’s CS 61B Data Structures class which sparked a lot of discussion about the differences (or lack thereof) in course quality between different schools.
A Reddit user (whom I made anonymous) saw one of my comments in that thread and sent me this incredibly long private message conveying his concerns and anxieties. The message is pasted below, with sensitive information removed using [square brackets]. I personally believe that while Berkeley’s Data Structures course is admittedly good, it does not imply other schools’ courses suck, and more important, it absolutely does not imply that students at other schools suck. In my response, I tried to convey that.
However, his message struck a chord in me because it made me realize something greater than that single student’s concern. I feel like there are many students like him at other schools who keep getting beat over the head with the preaching of “target schools” and the “big 5” and rankings that they lose faith in their own, really great, programs. And to be honest, the CSCareerQuestions community on Reddit does no small part in perpetuating those insecurities.
I personally believe that while the professional CS community is already somewhat known to be more meritocratic than other fields, it still has a lot more progress to make. Great coders can come out of everywhere, so it is about time that the field recognizes that and stops putting so much emphasis on the apparent “prestige” of CS programs. And when that happens, more students can feel rightfully confident in their own abilities and talents, no matter what program they are enrolled in. In a field plagued with “impostor syndrome” issues and self-esteem troubles, we don’t need another anxiety-causing contruct.
Anyways, here is the message I got, and below that is the response I gave.
I saw your post on the CSCQ thread about 61B a couple of days ago. This is a bit of a weird series of questions, but I hope you can understand where I’m coming from when I ask them. I’m currently a freshman CS major at [a different school than Berkeley], and after reading about Berkeley’s CS courses and how great it is, I’m really starting to question whether I’m screwed by going to [my school], rather than go for something greater. I mainly chose [my school] out of cost and it’s not totally bad CS program, but I’m wondering if I should consider the curriculum over the cost rather than the opposite.
I should preface this with the fact that if I use “greatness” about Berkeley or something to that effect, I’m not being sarcastic or jealous or whatever, I’m just trying my best to describe the curriculum, haha.
Just in your opinion, do you by chance know anything about the CS program at [my school], and whether it’s at all good? Should I be concerned with the pedigree of schools, in general? That is, whether it’ll help me get a nice job/internship?
I’ve read all these posts about how Berkeley has a phenomenal data structures (and I assume algorithms course), and then I look at my DS&A course (which, combines both I might add, instead of splitting it up) and I get nervous about my preparation going into CS as a field. It seems Berkeley students have so much “firepower” through the course that I don’t, how they’re prepared for medium-hard interview questions and help get internships through it, and I’m just wondering how I could try and reach that level, y’know? I know I could take the course through the website and whatnot, but I won’t have nearly any of the resources at my disposal that you guys do, which kind of makes me a bit skeptical in doing it. Not only that, but I only have 4 months of down time that I’d be able to spend on learning DS&A, and I don’t think I could really fit all of that into the summer break.
I guess what I’m asking in all of this is, in your opinion, what are some ways that I can really prepare for data structures and algorithms given my situation? I plan to read a book called Data Structures and Algorithms in Java by Robert Lafore. After I’ve read that, I plan to read Robert Sedgewick’s Algorithms book for concepts not present in that Java book, and maybe Steven Skiena’s Algorithm Design Manual as well if even after that, there’s stuff I haven’t covered in either of those books.
After that, or some point at least, I plan to complete Coursera’s Princeton’s Algorithms I and II courses, doing the homework and other assignments and all that. And after that (again, this is assuming I just don’t do anything else, which I do plan to do, but still), I’d hopefully like to learn web-dev using FreeCodeCamp and maybe make a small web app or improve on a previously built one. Maybe an app that takes a word or phrase and scrapes various news sites or social media sites and returns visualized data (maybe D3.JS?).
I know it sounds like a lot, but four months is also a lot and I have nothing else really going for me, so I mean, why let the time to go waste, right? Do you think this is a good “plan of study,” as it were? I would of course intersperse practice of each data structure and algorithm just to make sure I do understand it.
I’m sorry if this came off as therapy-esque and all that, I suppose I just need someone who knows their stuff (and hell, even if you’re also a freshman taking 61B, you probably know more than me :p )to set me straight. If you don’t feel comfortable answering this, I totally understand.
Thank you so much!”
Wow I am very flattered that you came to me for advice, haha. I wanna first say that you seem to be incredibly driven and that really impresses me. I don’t even think most of my peers are as ambitious or clear-minded in their goals as you.
Before I answer your questions, I also wanna say that I don’t know everything about the CS world, and I also don’t claim to be the best student by any metric, so please take what I am about to say with generous pinches of salt.
“…after reading about Berkeley’s CS courses and how great it is, I’m really starting to question whether I’m screwed by going to [my school]”
Yes, I do think that Berkeley’s CS courses are very well-run and well-taught, and I am admitedly very proud of the EECS department here. However, I do not think that you are screwed by going to [your school]. At Berkeley, we don’t learn deeper things than other schools; we don’t get exposed to secret data structures or secret algorithms; everything that gets taught here is easily accessible and commonly taught. I took a quick look at your DS course and I am very confident that it will teach you much of the same things we learn in 61B. You will not be behind.
“I mainly chose [my school] out of cost and it’s not totally bad CS program”
I think you made a good decision.
“Just in your opinion, do you by chance know anything about the CS program at [my school], and whether it’s at all good? Should I be concerned with the pedigree of schools, in general? That is, whether it’ll help me get a nice job/internship?”
Sorry, I am not familiar with it. But I also observe that the CS industry cares less about “prestige” than other industries. I genuinely believe that you (and I!) have just as much a change to get a great internship as, say, a Stanford student.
“It seems Berkeley students have so much “firepower”… how they’re prepared for medium-hard interview questions and help get internships through it”
We do get internships indirectly from 61B, because like I mentioned in my post the class provides a great foundation. However, the emphasis is on foundation. This class alone does not give students Google internships. Grinding leetcode.com problems does. Reading coding blogs does. Doing mock interviews with friends does. And these are all things anyone can do, regardless of whether they have taken 61B specifically. Likewise, I predict that your DS&A course will not give you all the prep you need for interview questions. And that’s ok! You seem to be driven enough that you will prep well enough for them yourself.
“I know it sounds like a lot, but four months is also a lot”
Your plan is really good and again, I think that its super cool that you are so driven. But yes, I do think that’s a lot. I think spending one summer working on a comprehensive, great side project will be enough on your plate. BTW, that’s what I am going to be doing this summer. Also fun fact/warning: when you say you plan on completing Coursera’s Princeton Algorithms course, 61B was actually heavily modeled after that course (Hug previously taught at Princeton). So you will basically be learning from 61B’s parent! But my warning is that I heard that the online version of the course has a lot of material missing due to some issues with migrating to Coursera’s new platform. So not all the problems/activities may be available.
Let me know if you have any more questions! You seem super informed and cool, and I hope we can keep in touch :) I am clearly very new to this internship-finding/career-making/what-am-I-doing-with-my-life thing, so maybe we can figure this thing out together!