🗒️ Ben's Notes

CS 61B: Data Structures

Welcome to my CS61B Guide! #

This is a non-comprehensive guide to data structures written with an intention to supplement learning and reviewing of Berkeley’s CS61B material. Main topics include:

  • Object oriented programming basics
  • Abstract data types
  • Asymptotics and runtime analysis
  • Sorting algorithms
  • Search algorithms
  • And some more miscellaneous topics thrown in!

This guide is written to be as easy to follow and digestible as possible😀I’ve included lots of diagrams, practice problems, and more intuitive explanations instead of the more straightforward approach most textbooks use. This isn’t a replacement for lectures and other course content. You probably need to look at those first, and come here if something isn’t sticking!

The 61B Concept Map #

Who is this for? #

Mostly me; making unnecessarily detailed guides is my goto method of making sure I understand everything😁 But you are welcome to use it as well for reviewing for 61B exams, touching up on data structures knowledge, or whatever you want!

Basic programming knowledge gained from CS61A or equivalent is assumed. Click here for my notes for that!

How to use this guide #

Again, I will emphasize that this isn’t a textbook. While I try to be as comprehensive as possible, I’m sure I missed plenty of important concepts or assume you know others. Please open an issue if you think something’s wrong!

This content was ported from my original 61B Notes, so you may see some strange formatting here and there. Again, please create an issue if you spot anything overly egregious.

Content Note

For more difficult topics, I’ll put a warning like this at the top of the page with links to prerequisites or supporting topics!

There are also plenty of practice problems to try out! Here’s an non-exhaustive list of pages with those if you are mostly interested in them and not the conceptual content.

How to contribute #

See the contributing guide for more details!

The pages that could be most improved (in no particular order) are Union Find (Disjoint Sets), Stacks and Queues, Linked Lists, Sets, Sorting, Searching, Binary Search, Shortest Paths, and Exceptions. Feel free to add whatever content you like (explanations, examples, practice problems, memes…) to these!

Additionally, there are plenty of topics (Regex, Testing, Files/Scanners, Ranges, GUI just to name a few) that aren’t currently covered in this guide. If you want to add one of these topics, please create an issue first but it will almost certainly be approved.

Credits #