Tanay Biradar

🌳 An Overachiever's Guide to College (CS @ UCSB)

Very, Very Important Disclaimer: This is not general advice. This is extremely opinionated, doesn't have a lot of nuance, and is definitely not for everyone. None of this is prescriptive; it's just what worked for me, a CS major at UCSB. Keep this at the front of your mind while reading this.

This June, I graduated from UCSB. It's been a really short 3 years, and I'll always look back on them fondly. I've learned a lot since my first day. Here are my distilled thoughts.

Most "how to succeed at college" advice focuses on the basics. Some of the advice is genuinely helpful: learn to manage your time, attend office hours, and get involved on campus. Other advice was terrible for me: avoid taking more than N classes per quarter, don't push yourself too hard, and wait until you've taken the foundational classes before you do anything else. The problem is that I don't operate that way. I need to figure out where my limits are, and I'm motivated by exploring topics I find exciting. I can fill in some of the gaps as I go.

Most college advice is (rightfully) aimed at the common-case student who wants to get good grades and is navigating the ropes of college. But what's next?

That's why I'm calling this "An Overachiever's Guide to College." At the risk of sounding pretentious, this is not advice for the common-case student. This is the advice that I wish I heard as a freshman CS major at UCSB. It's a compilation of my learnings so far, including what many of your seniors, professors, and academic advisors probably won't tell you.

Outline

Philosophy

This guide is aimed at "getting the most out of the college experience," loosely defined as finding a career path that you'll enjoy, academically preparing yourself as much as possible, and taking advantage of the many social + academic resources that college offers.

In order for it to be useful, you'll first need to know what you want from college. But knowing what you want starts from a personal philosophy. Here are some of the principles I use:

  1. Personal Growth and SGD

You don't always need an end goal; you just need a direction. At any given moment, you need to be clear about what you're doing: weighing different options, gathering data, figuring out what you want.

  1. Don't Waste Your Life

When I think of a life not wasted, I think about constantly trying to become an excellent person—whatever that means. I think of experimenting with silly ideas and building things. I think of taking care of the people around me and doing "good" (defined in some reasonable way) for other people. I think of continuously learning something and doing Hard Things from time to time.

  1. How to Waste Your Life

As my good friend Riley told me in a conversation, "We weren't given a main quest at birth." life isn't an optimization problem. But I can't help but feel that something's missing if you didn't explore the possibilities.

Whatever you do, do it with intention. Avoid falling into the easy traps of doing things solely because other people are doing them. Ask yourself, "Is there a deeper reason I'm spending my time on this?"

Secondly, follow the golden advice of Ranchoddas Chanchad from 3 Idiots (clip):

Kabil hone ke liye padho. Success ke piche mat bhago. Excellence, excellence ka picha karo. Success tumhare jhak maar ke peeche aayegi.

"Study for the sake of becoming more capable. Don't run after success. Excellence, excellence is what you should chase. Success will easily come after you."

Lastly, as a disclaimer, not all of this advice applies all of the time. You might need the exact opposite!

The Pillars of Self-Maintenance

I've seen absolute academic weapons pull all-nighters and sacrifice too much for their work, but I don't operate that way. Before optimizing my academics and extracurriculars, I need to satisfy my basic needs. (It sometimes makes sense to make sacrifices for a short-term goal or project. But I like to think that I prefer steady, sustainable growth over ephemeral bursts of energy.)

I'm no dietician, sleep scientist, or doctor, but I try to always maintain these fundamental pillars. This is all stuff that you know you should be doing:

  1. Food
    1. In the words of Michael Pollan, "Eat [real] food. Not too much. Mostly plants." In college, it's easy and socially acceptable to skip meals and subsist on a diet of instant ramen. Don't do it.
  2. Sleep
    1. Everyone needs different amounts of sleep. Find out how much you need to get through the day without fatigue. Good sleep has too many benefits to ignore.
  3. Exercise
    1. I aim to get exercise in at least 3 days a week. It doesn't really matter what it is—lifting, running, swimming—but it has to be meaningful in volume. When I regularly work out, I'm more energetic and my mind is clearer.
  4. Medical
    1. Don't neglect your fundamental physical/mental health needs. Without these, you won't be able to work as effectively, and you won't be happy while doing it.
  5. Social Life
    1. We're fundamentally social beings. Put effort into meeting people, make friends, and spend time with them. You don't have to go out doing crazy things all the time, but you should search for people you connect well with.

Is it easy—or even possible—to maintain all of these pillars all the time? No. But you can at least try. In reality, your priorities are going to swing between some combination of these, and that's ok. But if you're able to tend to these pillars well, the quality of your life becomes dramatically better.

Academic Strategy

Preface/Disclaimer

If you're struggling with your core classes, that's completely valid, and it's happened to me as well. In this case, though, most traditional study advice applies, and there's plenty of good stuff on the internet, so I'm not really going to cover that here. If you lose sleep over your GPA, this advice probably isn't going to be very useful quite yet.

The "Advanced" Academic Strategy

If you're not struggling too much in your core classes, these "advanced" techniques may be helpful. They're based on Andrej Karpathy's advice:

Getting actual, real-world experience, working on real code base[s], projects or problems outside of silly course exercises is extremely important.

- Andrej Karpathy

Projects, research, and hands-on work will teach you many things that classes cannot. Unlearn the mentality that GPA is everything—just don't let your GPA stand out in a bad way. Again: chase excellence, not success.

That said, you can get a lot out of your classes. Don't avoid the hard classes, and don't avoid a class just because others say that the professor is bad. If you're really interested in a class with a poorly-reputed professor, sit in on it and find out for yourself.

But you can't possibly squeeze all the juice out of all your classes. Especially if you want to eat, sleep, and sustain a social life. So how do you decide what to prioritize?

  1. Don't neglect fundamentals. It's tempting to jump into the exciting stuff. Don't let me stop you from doing that—I did the same thing. But don't neglect to also learn the fundamentals. You want to learn the field as deeply as possible—if you think you have an interest in ML, for example, taking fundamental classes (ex. linear algebra, analysis, etc.) will help you figure out if you really like it. The foundations are important, and will help you quickly pick up everything you need when you are self-studying. Personally, bottom-up learning doesn't quite work for me. I like to start with some fundamentals, jump around, and fill in the gaps like a coloring book. However, I do not neglect the fundamentals.
  2. Related to the previous point: If you're interested in a specific field (ex. machine learning), take as many relevant classes as you can in that field (ex. matrix analysis, reinforcement learning, optimization, whatever special topics you find).
  3. For any class, maximize the insight-effort ratio. Where possible, avoid coursework that is high-effort but low-payoff. Take classes that are low-effort and have a high payoff, or high-effort and have a very high payoff. Recognize that attending lecture has an opportunity cost: That's valuable time you could spend on projects, personal development, and rest. Only attend lectures when there's value in doing so. However, you should assume that your lectures are useful until you have enough evidence to suggest otherwise.

While we're on the topic of academic strategies, here are a few other insights:

  1. You don't actually learn much in lecture. The real learning happens when you do homework and assignments/projects. For this reason, don't do readings just for the sake of it. Use the readings as a reference to help you solve problems in your homework/projects.
  2. Don't take notes. You get caught up in writing things down, and you don't really try to understand what the professor is talking about. The optimal lecture strategy is to sit back, listen, and try to just understand. You don't need to recall every detail—usually a medium to high-level understanding is enough. You can fill in the details by looking at the slides/internet as needed.
  3. Study in the library. Study alone 80% of the time. Study with friends 20% of the time. A dedicated physical space helps you focus. And studying with friends is usually more of a distraction than a helper. But it is sometimes helpful to group study. And it's fun!

General Education (GEs)

People love to treat these classes as a joke and a waste of time. We should value education, not dismiss it. Regardless of what form it comes in. And it's nice to study English, Antarctic climate, or other subjects outside your major—especially when you're going to be taking hardcore technical classes most of the time. And, yes, there's value to "broadening your thinking." It's great to study technology, but technology is a means to an end. Good GEs help you appreciate this fact. You don't want to be that STEM major who only knows how to be technical. GEs teach you how to write and speak clearly, and they teach you how to be critical of the world around you.

Nevertheless, these should be lower-priority courses. Don't spend more time than you have to, but at least learn to appreciate disciplines other than your own. You can get most of the benefits without completing every reading or putting maximal effort into these classes.

Major Classes

There are three main divisions of major courses:

  1. Lower-division: Usually foundational knowledge like mathematics (calculus, linear algebra, differential equations, probability) or programming (object-oriented, basic data structures)
  2. Upper-division: The meat of your major. These are introductions to various sub-fields in your major (data structures and algorithms, computer architecture, operating systems). I repeat, these are introductory.
  3. Graduate: These will teach you many things the upper-divisions skipped over. Often more theoretical, specialized, and research/project-oriented.

Lower-Division Classes

Get your lower-division classes out of the way early. Freshman year is when you have the most time and energy. Use that to frontload your coursework. You'll thank yourself later. (I did this and took 5 classes each quarter of my first year. Towards the end, I took just 3 while finishing my degree in 3 years. I spent my last quarter mostly hanging out with friends, and I'm going to have those memories forever. I also learned a lot.)

Frontloading lower-division courses makes you eligible for internship and research opportunities sooner. While companies will usually prioritze projects and experience over coursework, writing Data Structures and Algorithms (or related classes) on your resume certainly helps tick some checkboxes. This especially helps for that difficult first internship. In school, frontloading also allows you to get to the upper-division and graduate classes quickly.

Basically, finish these classes as soon as possible so you can be as prepared as possible for anything that comes your way.

Aside: everything in CS is math. It's worth paying attention in your math classes. Take extra ones (linear algebra, analysis, abstract algebra, etc.) to build your mathematical maturity.

Upper-Division Classes

Use the upper-divisions to learn the basics of important sub-fields and figure out what you want to do in your career. Other than data structures + algorithms, UCSB now makes all of its CS classes electives. To me, every CS major still needs to take at least Computer Architecture, Operating Systems, ML or Deep Learning, and Programming Languages or Compilers.

Start these upper-divisions as soon as possible, even if you don't meet the prerequisites. Ask your academic advisors to let you take the class. If they say no, you can sometimes ask the professor to let you in. Be nice!

Prerequisites are often a lie—usually intended to ensure academic maturity. But you can get by in a basic machine learning class without deep algorithms knowledge. There will be some gaps, but you can usually fill them on your own. Nuance: If you're taking a class without prerequisites, still make sure you have a baseline level of preparation. You can do this by asking professors/TAs and just doing the coursework. If you avoid letting intimidation scare you away, then it's usually pretty obvious whether or not you are sufficiently prepared. I usually just enrolled in the classes I wanted to take—regardless of prerequisites—then found out pretty quickly whether or not I was prepared.

It can be a little intimidating to be the only first or second-year among third and fourth-years. It was for me. This is a good thing, though—upperclassmen will usually have a bit of a better idea of what they're doing than most freshmen. Making upperclassmen friends is awesome. But they don't know everything. It feels like everyone around you always knows what they're doing, but that's usually not the case. Even your advisors and professors don't know everything. Everyone is trying to figure things out. It's okay to be confused and lost. If you put in the effort to learn, then you can do quite well in some of these classes without too much prerequisite knowledge.

Some classes are a lot of work, so do some load balancing to make sure that you don't take the two heaviest classes in the same quarter. Compilers and Operating Systems are notorious at UCSB for being quite time-consuming. Take them in separate quarters.

When it comes to electives, choose them intentionally. I chose to specialize in ML because I know what I want. If you don't, use these electives to figure out what you might want to specialize in. Once again, if you don't know what you want, your effort should be directed to find out.

Taking upper-division classes also opens the door to graduate courses...

Graduate Classes

If you're like me, chances are that you've explored topics like reinforcement learning or conversational AI in your free time. Graduate classes are the chance for you to turn these specialized topics into your coursework. If you want rigor and detail (i.e. were disappointed in an undergraduate class), you'll usually get them in a graduate class.

There are several types of grad classes, including but not limited to theoretical (ex. preparing for qualifying exams), research, introductions to a special topic, and general seminars. They are all very different, and their difficulty can vary wildly. When choosing a graduate class to take, keep this in mind. What is your motivation for taking the class? Make sure the course's format aligns with your intentions.

This may not generalize, but in my experience with a few CS graduate courses...

I was intimidated by them at first, but I soon realized that graduate courses are less stressful than undergraduate ones. Grading is more relaxed, so you can focus on learning (excellence, not success). They're often more project-based, with no flurry of exams and deadlines. In these classes, you usually get out what you put in.

With graduate courses, however, it's sometimes easy to put in the bare minimum. Sometimes, this is acceptable, especially if you want to spend your time on other projects with a higher insight-effort ratio. But sometimes, you can just get lazy—this is a pitfall to be aware of.

Graduate classes also have a few other benefits:

  1. You get to meet graduate students, who have a little better idea of what they're doing than most undergrads. It's the thing with upper-division classes, just upgraded by a level. (But remember that grad students by no means have everything figured out—just ask them.)
  2. You also get to know professors more closely, and it's easier to do research with them after taking their class and getting a taste for the field.
  3. Even if you're not planning to go to graduate school, it's still worthwhile to do a deep dive. Grad classes can be a good way to do this.

Don't just take a grad class for the sake of putting it on your resume/transcript. Nobody really cares about that. Again, focus on excellence and not success. Take the grad classes because they're useful for exploring something you're interested in. (They do, however, also have the side effect of helping with grad school applications if you choose to go that route.)

It's nice that you're held to the standards of a grad student in these courses. Nobody's really holding your hand, but professors and classmates will certainly help you if you ask for it. Another nice thing is that—compared to undergrad classes—more people have the maturity to learn for the sake of knowledge. Not just for the sake of finishing their degree.

Extracurriculars

Of course, college life comes with a ton of extracurricular activities. I've sorted them into a few buckets: Clubs, research, internships, and noncanonical activities.

Clubs

At the start, join a bunch of clubs and narrow them down later. Basically, explore then exploit.

The rest of this advice is very specific to my experience. It probably does not generalize very well...

You might want to join the leadership board of a club. Not because it boosts your resume, but because of all the other benefits. If you apply for club leadership just because you want a resume line item, then you will likely be in for a bad time. You have to enjoy it.

If you get lucky...

Joining the board of a club gives you a lot of fulfillment. It's high-impact—you're directly helping out dozens, if not hundreds of students—and it's really good for you socially. The size of my social graph has expanded dramatically by being a club officer. And that's awesome for making friends, close friends, and acquaintances. And as a consequence, it's good for your professional life as well.

You also learn a lot by joining the board of a club. Planning events requires patience, and working with other people forces you to become an effective communicator. These are incredibly valuable skills that will serve you in research, internships, and relationships. Especially the communication thing.

Personally, I would go so far as to say that joining the board of UCSB's Data Science Club was the single highest-value decision I made throughout all of college due to domino effects like these.

However, finding well-organized clubs like Data Science UCSB is not easy. But at least make an earnest effort to join a club. And if it's the right club, join the board.

Research

Even if you're not planning to go into research or graduate school, it's still useful to try it out. Research teaches you how to learn very effectively, and it's a great way to explore a field in more depth than any class can ever teach you. Professors are, by virtue of holding a PhD, experts in their specific field. Do some research to take advantage of that, and learn from their graduate students as well.

You don't have to do anything amazing or ground-breaking. Just try it out. Even if you're just implementing a side project for your PhD student mentor, it might be worth your time. But a lot of undergrad research opportunities can be a waste of time—it takes some self-learning, trial, and error to figure out what projects are worth doing. Eventually you might develop your own taste in research, and at that point you can reach out to a professor or PhD student to advise you on your own idea.

It's important to get your fundamental classes out of the way as soon as possible. But in any case, you will have no idea what you are doing at first—and that's okay. Papers are written by domain experts for domain experts, so you need to learn to speak their language by immersing yourself in it. In general, research is hard. And it has a way of constantly humbling you. Remember that.

Internships

There's probably better internship advice out there on the internet, but here are a few miscellaneous notes:

  1. Cold apply barely works. I've seen other people have success, but one year I got only around 5 interviews out of 400 cold applications. It's largely a waste of time, but you can win the lottery sometimes.
  2. I've seen better success from cold-emailing startups. This usually works if you have a reasonably good resume (classes, projects, and research that are relevant to the company's work).
  3. Work on your resume! Use interview rate as a proxy for how good your resume is. If you're not getting a lot of interviews, then you probably need to keep working on your resume. That's why the first internship is the hardest.

Noncanonical Activities

The above are the "typical" activities that undergrads do, but don't limit yourself to them. Your action space is larger than you think. Learn a new language, or a new instrument, make pottery, or just go outside and touch grass. Touching grass is highly underrated (is it?)

At the end of the day, you're a human. Not a machine. It's easy to forget, but your work is just one part of your life. Having a social life, learning how to communicate and have emotional maturity, and going outside make you a better person. A life well lived includes all of the above. If you only learned how to min-max your academics in college, you've largely wasted your time.

Conclusion

My advice throughout this post has been mostly academic, but there's so much more to college than academics. It's simply impossible to write a comprehensive guide to everything in college—academics are probably the easiest piece to write a guide for. But I think Rancho's advice applies to more than just studying: If you focus on becoming an excellent person—whatever that means—success will naturally run after you.

Other Good Advice

A few other good advice posts I've personally bookmarked:

And a huge thanks to my friend Dan for a ton of feedback! All opinions and errors are mine.

2025-09-12