An in depth review of CS61BL

CS 61BL, otherwise known as Data Structures & Programming Methodology, is a module by Berkeley’s Department of Electrical Engineering and Computer Sciences. It’s popularly chosen as a replacement for SUTD’s Introduction to Algorithms (50.004); its prerequisite, CS 61A, is similar to SUTD’s The Digital World (10.009). However, there are quite a few big differences between CS 61BL and The Digital World (DW), so here’s a guide for how to do well in CS 61BL (or at the very least, not be enraged by it).

First things first, though. If you really like coding or don’t mind coding challenges, go for it! This module might be challenging, but if you come in with an open mind and zero expectations, you’ll certainly have fun. Take it from me – I knew next to nothing about this module until my first day taking it.

That having been said, my CS 61BL guide officially starts here.

Firstly, the syllabus. Much of CS 61BL involves you recreating data structures that are already available in many programming languages. What is a data structure? Just think about things you regularly use in Python to aid data storage and processing: lists, sets, arrays, dictionaries, etc. In CS 61BL, you’ll learn about the underlying features and capabilities of each of them, as well as how well they perform (fast/slow, memory-intensive/efficient) under different circumstances.

Secondly, the schedule. CS 61BL has a 2-hour lecture on Wednesday, delivered by an Instructor, and 4 3-hour lab sessions on the remaining weekdays, with TAs in charge. Unlike DW, however, the lab sessions rarely include any teaching. You have to read the lab content and work through coding exercises by yourself, though TAs can help you if you’re stuck. There’s daily homework for every lab, so expect to spend much more time coding in CS 61BL than in DW.

Thirdly, the tools. CS 61BL uses Java and Git. Java is an object-oriented programming language, but with pretty different syntax and stricter rules compared to Python (mostly because it’s strongly typed, while Python is weakly typed). Git is a version control system – think of it like Google Drive for you to backup, manage and restore your code, except much more versatile. In CS 61BL, Java is how you code, while Git is how you get the base code, store code as you go, and submit code to the online grader – they’re equivalent to DW’s Python and Vocareum, respectively. Don’t worry too much if you aren’t familiar with them, because the first few days of the module is set aside for you to get accustomed to using them.

Last and most importantly, the homework, quizzes, projects, and exams – the things you do to actually score.

As mentioned above, each lab session comes with its own homework problems, due the next day; in addition, each lab also has a worksheet that you must complete to demonstrate that you understand the topic of the day. Together, homework and quizzes are worth a quarter of your total score.

Projects are long coding exercises that you complete alongside a partner. There’re 4 projects, each lasting from 1 to 3 weeks, and they test how well you can organize your code, utilize the data structures you’ve learned and work with your partner to build an efficient program that satisfies the requirements. Together, they’re worth a third of your total score.

There’re 3 exams: Midterm 1, Midterm 2 and the Final. Unlike DW’s open-PC, closed-book exam environment, in CS 61BL you’re required to physically write your code. With a pen. On paper. All the while making sure that your syntax, spelling and method names are correct. It was the biggest difference for me and threw me completely off-guard in my Midterm 1 because I made a lot of syntax errors. There’s a way out, though – you are allowed a cheat sheet (or two), so the best strategy is to use a portion of it as a mini-library. Many questions also throw curveballs at you, so you need to know your content really well, including a lot of edge cases that you never have to consider in DW.

The good thing amidst all these differences, though, is that you can still get substantial help from TAs on the beloved Piazza forum, with the added bonus of this:

( repost from the piazza site )

That’s all about CS 61BL from me. As Instructors usually say to students when the module starts, “Grades and penalties aren’t the purposes of this course; we really just want you to learn and be successful.” So if you’re going for this course, have fun and happy coding!