Welcome to one of the most widely known introductory Computer Science courses, UC Berkeley’s CS 61A. If you’re anything like… well, probably around half of the people that take this class, you know that you’re interested in Computer Science but have little to no experience. Given that, this class can be pretty daunting sometimes, posing questions that are hard to answer and teaching ideas and programming constructs that are challenging to understand. My goal then with creating this guide is to comprehensively walk you through the course, taking time to explain the harder parts with as much detail and analogy as I can.
A little bit about me: my name’s VS, and I’m a student at UC Berkeley. I took CS 61A my first semester here, Fall 2019. The semester after, I became a Lab AI for the course because I knew I wanted to give back to it, and that’s the semester I began writing this. I became a uGSI for the course during Summer 2020, which is when I wrote the majority of this guide. I’ll try my best to keep this place up to date so that you’re always learning the right material, but if you find anything that’s no longer covered in the course, feel free to shoot me an email at
vanshaj (at) berkeley (dot) edu.
This guide is also community-friendly! All of the content is hosted on GitHub and if you find any issues (or want to add something!) please please please feel free to contribute – it’ll help everyone taking the course in the future!
Please do note that this guide is NOT a replacement for the course. I highly recommend you keep up with lectures, discussions, and labs, whether by attending each physically or by completing them on your own time. The course staff for 61A is an invaluable resource with lots of great knowledge to share, and it would be a shame if you did not utilize this resource.
That said, I hope you find what you’re looking for here, and more than that I hope you enjoy this course and any Computer Science classes you choose to take in the future.