About This Guide

Thanks for stopping by. I hope this guide is of good use to you, but before we get into it, I just want to talk a little bit about how to best use this guide, as well as some other administrivia.

How to Use This Guide

This guide is not a textbook, so please don’t use it as such. I’m writing this as a supplement from a student’s perspective to help further the knowledge you gain using course materials. The order in which you reference materials should be something like so:

  1. Lecture: this is the best way to get the most up-to-date course content.
  2. Textbook: Composing Programs by John DeNero.
  3. Discussion: these worksheets are designed to further your understanding of everything you learn in lecture.
  4. TAs and AIs: course staff in general is always ready and willing to answer questions. We can help you better if we can change our methodology based on your reactions, which is obviously not something a textbook or course guide can do.
  5. Piazza: your peers are also a great resource. If you ask a question on Piazza, chances are another student will know the answer or at least be able to contribute something meaningful.
  6. This Guide: this guide is a supplement for concepts you find yourself confused on. Do not rely on it, but use it as best as you can.


The content in this guide is open source! Feel free to browse the Markdown, and if you have any contributions to make, please do! Check out the CONTRIBUTING guide :)


It’s only proper that I cite my sources and inspiration, so here they are.

  • John DeNero, Professor of CS at UC Berkeley. Taught the class in Fall 2019, when I took it, so he’s the reason I know and understand the material as well as I do.
  • Composing Programs, the CS 61A textbook at the time of writing. An invaluable resource with more information about everything than you’ll need.
  • Structure and Interpretation of Computer Programs, the original course textbook published by MIT Press.