CS 61B: Data Structures

Fall 2022

UC Berkeley

CS 61B focuses on software efficiency from design and runtime perspectives. It covers object-oriented programming with Java, teaching data structures and various programming concepts. The course promotes hands-on learning with optional assignments.

Course Page

Overview

The CS 61 series is an introduction to Computer Science, with particular emphasis on software and machines from a programmer’s point of view. CS 61A covered high-level approaches to problem-solving, providing you with a variety of ways to organize solutions to programming problems as compositions of functions, collections of objects, or sets of rules. In CS 61B, we move to a somewhat more detailed (and to some extent, more basic) level of programming by focusing particularly on the efficiency of writing programs (design) and running programs (runtime).

Prerequisites

This class assumes you have taken CS 61A, CS 88, or E 7, or have equivalent background to a student who has taken one of these courses. The course is largely built upon the assumption that you have taken CS 61A. CS 88 and E7 students may find the beginning of the course to be a bit scarier, particularly when it comes to object oriented programming. We assume you are coming in with zero Java experience, but we will move through basic Java syntax very quickly.

We recommend all students to complete the optional introductory assignment by the beginning of the semester to get comfortable with Java and practice some of the programming skills expected by this class.

If you already have Java experience, great! We hope that you’ll help out your fellow students in discussion, lab, and on our class forum, particularly in the opening weeks when everyone is catching up on Java.

Learning objectives

No data.

Textbooks and other notes

There is no required textbook for the class.

There is an online textbook written by myself and a large team of former TAs. It can be found at https://joshhug.gitbooks.io/hug61b. If you find these notes insufficient, you might consider consulting Paul Hilfinger’s (free) Java Reference or Head First Java, 2nd Edition by Sierra and Bates (O’Reilly, 2005). These are not required for the course. The optional textbook for the weeks 5-14 of the course is Algorithms, 4th Edition by Wayne and Sedgewick.

The official description of the Java core language is available online in The Java Language Specification (Java SE 17 Edition) by James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley, Daniel Smith, and Gavin Bierman. It’s extremely thorough and precise, at the expense of being quite dense and technical. You will find the official Java 17 documentation to be useful as well

Other courses in Data Structures and Algorithms

CSE 373 Data Structures and Algorithms

Summer 2022

University of Washington

CS 161 Design and Analysis of Algorithms

Winter 2023

Stanford University

15-451/651 Algorithms

Spring 2022

Carnegie Mellon University

CS 166 Data Structures

Spring 2022

Stanford University

Courseware availability

Lecture slides available at Calendar

Lecture videos available at Calendar

Labs available at Calendar

Assignments available at Calendar

Projects available at Calendar

Guides available at Calendar

Discussions with solutions available at Calendar

Resources available at Resources

Covered concepts