Tips to Succeed in CS61B

As a soon-to-graduate senior and four-semester veteran TA of UC Berkeley’s CS61B, I’ve spent more time with data structures than the average human (with stacks of pancakes being my favorite, of course). I’ve learned that CS61B isn’t simply about mastering data structures; it’s an academic rollercoaster that pushes your coding skills, problem-solving abilities, and mental resilience to new heights. From my own late-night debugging sessions as a student to guiding others through office hours, I’ve gathered valuable insights on how to navigate this challenging course successfully. This guide will cover three essential strategies: staying on track, building confidence, and leveraging office hours effectively. Without further ado, let’s dive in!

Note: I want to preface the post by saying that success in CS61B comes in many different forms depending on your goals. To me, success is not about getting the top grade in the class; it means understanding the material in a way that you can explain it to your friends, feeling like your problem-solving skills are enhanced through interesting projects, and lastly, feeling confident in your ability to go out into the world and code up your own projects.

Tip #1: Why Starting Early is Crucial

CS61B is an extremely fast-paced course. You might be thinking, “Well, Stella, I’ve taken many other work-intensive courses in high school or college,” but let me tell you, CS61B will change your opinion on what is fast-paced. I would also argue that CS61B is much faster than CS61A or CS88 because of the length of the assignments and the depth of the material. We asked students, “Compared to the average course you’ve taken at Berkeley, how did CS 61B’s workload compare?” and 83% said more. (FA24 End of Semester Survey)

The first time management challenge presents itself in the very first week of the course: learning Java. Java is a very verbose and complex programming language you probably haven’t seen before. The class’s pace expects you to become fluent in the language within 1 to 2 weeks, which is very little time. It is important in this stage to really hone in on your Java skills because they will be the foundation of everything you do. This might mean taking additional time outside of class to watch YouTube videos, do introductory problems, or ask for help during office hours. It might even be helpful to make a cheat sheet for yourself on helpful Java commands and their corresponding syntax in Python. Tip: I also have all my helpful materials posted on the teaching tab of this site you’re welcome to check out!

The second time management challenge will come with projects. The majority of students are spending 7-20+ hours on each project, with more on the later projects. (FA24 End of Semester Survey) What does this mean? Start as early as possible on them! As a student, I remember when I took 61B, the day the project was released I would spend 2 hours just reading the spec and getting set up so I could come in immediately the next day to office hours to ask questions about anything confusing. One of the biggest painpoint projects for students is Project 0, which is released very early on in the course. And let me tell you, Project 0 is no “Level 0” or joke. It is a full-length project and can take up to 15+ hours to complete. Since this project rolls around so quickly, it’s easy to put it off or not realize the difficulty and hour commitment it will take. This could lead to a snowball effect of getting extensions and falling behind on all Projects 1-3 throughout the semester. So I would recommend getting started on that ASAP! I will say though that extenuating circumstances always happen; maybe you get sick for a week or have a family emergency. The course staff is very understanding of this and grants extensions in those cases.

The third time management problem will come with falling behind in content. As I just mentioned, you’re putting all this work into projects, right, so it feels like going to lectures and discussions is just not important anymore. Don’t get caught in this mentality! I encourage you to really stay on top of the material because it actually is being applied in projects, assignments, homework, and labs. For me, to be completely transparent, I did not have the energy to go to every lecture taking the course. Sometimes it was easier to just go to a discussion and exam discussion than to go to the real lecture. I also think that’s why as a TA I teach bridge discussion now, and I highly recommend checking it out. It is a 2-hour extended discussion to cover more content and the entire worksheet. Another great content resource is tutor review sessions. They usually happen in weeks leading up to the final and are a great way to get a refresher on the material and do a worksheet.

Overall, the key takeaway here is starting early and learning how to to adapt quickly to new deadlines. Since the course is so content heavy, you can estimate a total of 2-3 hours a week for lab, 1-2 hours a week for discussion, 7-15+ hours for projects, and 5-10 hours for homework. (Homeworks are less frequent)

Tip #2: Mastering the Mental Game of CS61B

CS61B can be an incredibly challenging course, often pushing students to their limits. Many find themselves struggling with complex projects and feeling overwhelmed. I’ve been there too, experiencing lots of stress and de-motivation during the course. However, maintaining a positive mindset is important for your success!

It’s easy to fall into the trap of comparing yourself to others, especially when you encounter classmates who seem to breeze through the material. Remember, everyone’s journey is different. According to our survey, only 35% of students had prior experience with Object-Oriented Programming and Inheritance in Java before taking the course. This means the majority of your peers are also learning these concepts for the first time.

When you feel overwhelmed by a project or assignment (which is likely to happen), try breaking it down into smaller, manageable tasks. Set mini-goals for yourself, such as completing one helper method per day. This approach can make daunting projects feel more achievable. Don’t hesitate to seek help from TAs during office hours - we’re here to support you!

Tip #3: Office Hours as a Secret Weapon

Office hours are an amazing resource in CS61B! Their importance is clear from our Fall 2024 survey, where 1/3 of students agreed that attending office hours is necessary for success. In fact, 2/3 of students spend at least 30 minutes in office hours weekly. As a former CS61B student, I found going to office hours extremely helpful and probably averaged going around 2-3 times per week. Office hours questions come in various forms. Debugging questions are common, where TAs guide can help guide through tricky code or examples that are not passing tests. Conceptual questions are equally valuable, allowing you to discuss broader topics like a project implementation approach.

To maximize the benefits of office hours, I reccomend taking notes on your conversation with a TA. If it is code related, you could write out some comments in your IntelliJ. If it it comceptual, maybe drawing out a diagram or notes would help.

Also, the office hours community is so real! I met some of my best friends and study group mates in CS61B office hours. Since it is one of the most crowded office hours, you will have lots of opportunities to discuss with those around you. Although most work is individual, you can work together to solve conceptual ideas!

What’s next?

That wraps up the three high-level tips that come to mind with CS61B’s success! However, I wanted to leave anyone reading this with some concrete action items that would help address these tips.

  • If you’re reading this in the initial weeks of the course, try and practice a Java every day to strengthen your base.
  • Put all the assignment dates into your calendar.
  • Schedule in weekly when you can go to office hours on your calendar.
  • Choose discussions/labs that work for you and also schedule them in for yourself; tell yourself it is important. (Recommend Bridge)
  • If you need an extension, ask for one and schedule a student support meeting in the semester - there you can have a 1-on-1 with a TA to make a whole strategy for how to come back from being a bit behind.
  • Know that your test scores do NOT define you; It is much more about your progress (that is why there is a clobber policy) - I got a 47% on MT2 and came back with an 80+% on the final (and now I’m a TA).
  • Don’t be afraid to ask for help!

To finish off, this post was not meant to scare you about the rigor of CS61B! It is trying to equip you with strategies so you can succeed. And while CS61B is super tough and time-consuming, it is incredibly rewarding. It is my favorite course at Berkeley because it taught me two key things. First, strong foundations. CS61B is the pillar of all CS courses to come and data structures are the building blocks of computing. Second, confidence. After getting through CS61B, I felt like I could achieve anything. It taught me how to break down large problems, manage big projects, and start something from scratch. I truly believe anyone in CS61B can achieve success with hard work and a growth mindset! I believe in you; you’ve got this!