Welcome

Welcome to 64bitpanda's CS61B Guide!

(If you are looking at this in github, go to cs61b.bencuan.me for a much better experience!)

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!*

Do note that basic knowledge gained from CS61A or equivalent is assumed. Click here for my notes for that!

*Must comply with WTF license terms​

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. I don't have an army of peer reviewers and guinea pigs to test-read the thing, so it's also not guaranteed that everything is 100% accurate. Please open an issue if you think something's wrong!

For more difficult topics, I'll put a warning like this at the top of the page with links to prerequisites or supporting topics so that you won't feel completely lost πŸ˜‰

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.

Best pages!

Here's a list of the most complete, well-written pages that I would trust to enhance your understanding and intuition the most. If you're feeling pretty good about these topics already, these will definitely be worth it to read!

How to contribute

Fork the GitHub repository and create a pull request. All contributions are welcome! Pages are formatted in Markdown syntax. Please edit existing pages only unless you have created an issue and I have gotten back to you about making a new page. Thanks πŸ˜„

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