(from the experience of a CS sophomore)
Majoring in Computer Science at Berkeley is no light feat; reputed as one of the country’s top schools for Engineering, the academics and opportunities here definitely contribute to its renown.
There are two traditional paths for Computer Science at Berkeley:
- EECS: Students are directly admitted into the major, and this major is part of the College of Engineering. The EECS major has slightly different requirements from L&S CS.
- L&S CS: Any student in the L&S college can major in CS if they meet the declaration requirements. Students from other colleges can major in it too but may need to transfer colleges.
To declare is to meet the minimum 3.30 GPA cap across three prerequisite courses in order to be accepted into the major. In this guide, we’ll discuss the declaring process and share advice from declared CS students.
Disclaimer: This guide is written based on personal experiences and is not intended to be an official document. Please refer to Berkeley CS websites and your academic advisor for the most up-to-date info.
Courses You’ll Be Taking
You’ll be working towards the 3.30 GPA average across three prerequisite courses: CS61A, CS61B, and CS70.
These courses are the only required courses to declare, and no other classes will count towards your prerequisite GPA. All three classes are offered every semester (including summers), and have expanding class size; you don’t need to worry about not making it into the class since the classes will expand to accommodate everyone who wishes to enroll.
** In light of current COVID-19 circumstances, expanding class size is still likely but may not be guaranteed for Fall 2021; please contact your advisor to plan accordingly. **
The reason why these classes can expand is due to both lecture webcasts and large course staff. Every lecture will be recorded for those who don’t wish to attend live lectures, so you can enroll in classes with conflicting times if you’d like (However, make sure to check the date and time of the finals, since those directly correlate with the regular class schedules). That being said, the lecturers are all great in-person and I would recommend attending live lectures when you can.
Also, you will not be choosing a lab nor discussion when enrolling in CS61A, CS61B, and CS70 during your Phase I on CalCentral. Therefore, all the lab/discussion times are set to Sunday. You’ll be able to choose a lab and discussion on a different sign-up that will be released by the course staff of each class on Piazza. This happens at the start of the semester.
Now, let’s jump into what these classes will look like.
CS61A: Structure and Interpretation of Computer Programs
(I took this in Fall 2018 with John DeNero)
CS61A is traditionally the first prerequisite course that you take at Berkeley; for many, it is also their first look at programming in Berkeley. No programming experience is needed for this course.
Programming Languages: Python, Scheme, SQL
What you’ll be learning: Core topics of programming (including object-oriented programming), Scheme, basics of SQL
What you’ll be spending time on:
- Weekly coding homework
- 4 coding projects spread out through the semester
Homework is very well-supported; there is plenty of help through office hours
Lab and Discussion are weekly sections that you attend with a TA to get hands-on practice with concepts
Projects are broken up into parts; again, very well-supported and you can get help anytime
Grading: Grade bins
- Grade bins are adjusted point-based boundaries for each letter grade and can vary (ex. 250/300 total points for a B+, 225/300 points for a B)
Again, no programming experience is required to take this course. However, it can potentially be a steep learning curve for some. A more introductory starting option is CS10 or Data 8. Many people do take CS61A in the first semester without programming experience, and I feel like it is doable as long as you are consistent with the work and effort! Your mileage may vary, so take things at your own pace.
CS61B: Data Structures
(I took this in Spring 2019 with Josh Hug)
CS61B is traditionally taken after CS61A, and it is a course that focuses less on how to code and more on how to use code to accomplish things. The first bit of the class teaches you how to program in Java, and then you’ll be using Java to create programs that accomplish things like storing data in different ways (data structures). It’s a class that gives you a better feel of what software engineering in the field can look like.
Prerequisite: CS61A or experience with Java/object-oriented programming
Programming Language: Java
What you’ll be learning: Java fundamentals, data structures, algorithms
What you’ll be spending time on:
- Some coding homework
- 3-4 coding projects spread out through the semester
Homework is still well-supported, like CS61A.
Lab and Discussion are in the same style as CS61A sections.
Projects are broken up into parts, and it’s a good idea to go to office hours early on (they get packed towards the deadline).
- CS61B projects are longer and more difficult than ones in CS61A, but there are fewer in number.
Grading: Grade bins
As you can see, CS61B is a lot more project-focused than CS61A, and projects will take up more of your time than any other assignment category. Conversely, there are fewer homework assignments so that you can focus on your project. You will walk away from this class with better programming/debugging skills and new patience levels.
CS 70: Discrete Mathematics and Probability Theory
(I took this in Fall 2019 with Alistair Sinclair & Yun Song)
CS 70 is not a programming class, so there are no coding languages that you’ll be learning. In the first half of the class, you’ll be writing proofs instead of code. Then, you’ll be learning probability. This class goes in a completely different direction from CS 61A/B. It involves more critical thinking skills and builds mathematical maturity (a term you’ll be hearing a lot). For that reason, it can be more difficult for some. However, CS 70 is still very well-supported and there are a lot of resources that can help you succeed.
Prerequisites: None, but CS61B is highly recommended (for the data structures knowledge).
What you’ll be learning: Discrete math topics (proofs, modular arithmetic), probability topics (variance/expectation, probability distributions)
What you’ll be spending time on:
- Weekly math homeworks
Homework is definitely longer than the homework from CS61A and CS61B (can take more than 5 hours/week), but still supported by office hours. The problem sets are like word problems that you’ll type or handwrite solutions to.
There is no Lab for the course, but there is still Discussion.
Grading: Usually curved
- Curve: Your grades are scaled based on class performance as a whole. Note: Your grade will never get curved down; your grade can only go up with the curve.
- Note: This class is almost always curved, but there are offerings of the class that operate on grade bins depending on who’s teaching.
This was just a quick overview of the courses, but you can also refer to past course websites to see what each class covers and what the timeline was like. All three courses have 2 midterms and a final, so you will usually be alternating between working on a project or studying for an exam.
Ideally, you should intend to declare before the end of sophomore year or at the beginning of junior year. If you’d like, you are also allowed to take any prerequisites concurrently with each other. In addition, you can retake any course and still have it count towards your declaring GPA — as of 2020, the grade of that course will be the average of all the times you’ve taken it.
When you’re finally taking your last prerequisite, you’ll fill out the Major Application Form (you can find it under “Applying to the CS Major” section here) before the end of the semester. There is no essay or writing involved in the application; you’ll just be filling out a list of courses you’ve taken and plan to take. This is something you’ll complete before you get your final grade for your last prerequisite.
While going through your prerequisites, it is highly likely that you’ll struggle at some point or another. Different people do well in different classes, and finding your classes to be difficult does not mean that you’re not cut out for computer science! Also, it’s important to know that classes do not necessarily get linearly difficult as you progress through your courses. Personally, I liked CS 61B better than CS 61A, but lots of people have very different opinions. Other people’s experiences don’t dictate the quality of your own performance, so try to avoid comparing your academics to others.
You’ll hear the phrase “3.30 GPA cutoff” a lot, but let’s look at what this looks like in the context of the courses. At Berkeley, a 3.30 GPA is a B+ average.
According to Berkeley’s official GPA scale:
- A/A+ : 4.00, A- : 3.70, B+ : 3.30, B : 3.00, B- : 2.70, C+ : 2.30, C : 2.00, C- :1.70
Historically, the prerequisites themselves usually each have around a B+ average, as per the EECS Department Grading Guidelines. This means that if your scores balance out to the mean/median score of the class, you’ll earn a B+ or higher.
Here’s the thing: classes may give you a little bit of “sticker shock” when you see your exam grades. Exams can have averages as low as 50-60%, so don’t stress! Realistically, if you’re on top of the material and have consistently completed all the coursework, you don’t need to worry at all. Your exam grades may look scary, but final grading is not brutal. For example, you do not need to be scoring in the 80s range for a B in the class (that would be in the A range instead, which says a lot about the boundaries for the other grades). Summer classes are graded the same way, but note that the course pace is faster since the same amount of material is condensed into a shorter period of time.
Homework, projects, and labs are also a significant factor in your grade, so aim to do well on those. This is very doable, so try to start your assignments early! That way, you’ll have breathing room to get help in case you get stuck on a problem.
Although classes can seem daunting, there is an abundance of resources you can rely on to get the help that you need. These resources will help you with anything from conceptual questions to homework/project questions.
Piazza: An online forum for each class where you can make threads to ask questions, or read responses from TAs in other threads.
Office Hours: These are help sessions hosted by course staff; there will be TAs that go around answering questions and helping those who are stuck on homework/projects/general concepts. Request help online and TA will call your name!
Homework Party/Project Party: Also hosted by course staff, this is a space where everyone is working on the same assignment. While TAs are helping people out, you can work together with classmates to figure things out too.
- Computer Science Mentors (CSM): Weekly group tutoring; signups are released a couple of weeks into the semester on Piazza
- CS370: Weekly one-on-one tutoring from students in this introductory teaching course; weekly signups are released on Piazza
- HKN: Drop-in tutoring; details are posted on their website
- FemTech: Weekly group tutoring; signups are released a couple of weeks into the semester on Piazza
Your Classmates: Your peers can be some of the most valuable resources; you can do work together, study together, and also keep each other sane and motivated.
“One thing I found super helpful was making a study group with other friends in the class. We would all take the practice tests individually and then go over them together. If I didn’t understand something, usually someone else did and was able to help explain it to me. If I understood a concept that one of my friends didn’t, I got to try to teach it to them which helped both of our understandings. Plus, it made studying a lot more fun!”
– Cara Wolfe, CS ‘2021
Advice from Declared Students
Here’s some additional advice from declared L&S CS students:
“Don’t overwhelm yourself! It’s tempting to get involved in as many classes and as many organizations as possible your first year and still feel like you’re not doing “enough.” Remember that sometimes we may compare ourselves to someone we see who’s doing just “right” and set unrealistic expectations for ourselves. It’s totally fine to take things at your own pace. Don’t take too heavy of a course load, and make sure you have enough time each week to take time off for yourself. Also, back up your files on a hard drive/Github in case something happens to your laptop.”
– Chi Tsai, CS ‘2022
“Focus more on personal growth and how much info you are learning rather than the quantitative benchmark of declaring! Even though the nature of declaring is really stressful, it’s important to remember that this truly doesn’t define your future. Like life/career outcomes don’t depend on CS vs any other major. What really matters is your personal wellbeing. In terms of career, your capabilities and skillset can be developed during the process of declaring but aren’t dependent on actually declaring. It helped me a lot to focus on how I was growing and learning from my classes holistically rather than just in the perspective of my GPA.”
– Grace Lin, CS ‘2021
“Realize things are a marathon and not a race. Getting the GPA is stressful, but the ultimate goal should be to learn how to better learn.”
– Amber Xie, CS ‘2022
“Don’t underestimate your intelligence, and know that there are always people willing to help you. ”
– Neha Bashyam, CS ‘2022
“Your life is not ruined if you don’t declare. Also, if you have a passion you should definitely pursue it.”
– Alex Feng, CS ‘2022
“Stay caught up with classes and don’t be afraid to ask for help!”
– Imaani Choudhuri, CS ‘2021
If you didn’t meet the GPA cutoff but would still like to declare, you can appeal, as per the Official Appeal Guidelines. You can start the appeal process at any time while taking your last prerequisite (you don’t need to wait until after you know your GPA). You’re also allowed to appeal multiple times.
“If you’re planning to appeal, make sure you have a good letter of recommendation; I didn’t think I would make it in but I had a good letter of rec. I also showed them proof of employment (in the CS field) and told them about my journey with CS. I would also recommend turning in the appeal at the beginning of the following semester.”
– Jasmine Truong, CS ‘2021
Also, there are other related majors that you can pursue, such as Data Science and Cognitive Science.
Fun fact: Berkeley has recently received its largest donation ever, which will be dedicated to building a new data science hub on campus. Data Science is a relatively new major, and these are exciting times for the department.
All in all, declaring Computer Science at Berkeley can seem like a significant mountain to overcome. However, it is definitely doable with consistent effort and discipline. Always know that you’re not alone during the journey and that the Computer Science courses are extremely well-supported, especially the prerequisites. There are boundless resources that you can receive help from.
In addition, remember that college is not all about academics and declaring! Make sure that you go out and explore all that Berkeley has to offer — trust me, some of the best parts of college are outside the classroom. You only get one undergraduate experience, so do make the most of it.
Hope this guide was helpful! If you have any questions about anything (regarding CS or otherwise), definitely feel free to reach out to me at email@example.com.