The prerequisites for CS 161 are:

We assume basic knowledge of C and Python. Some basic familiarity with Unix systems is helpful for Project 1. Project 2 is done in Go and we won’t have any lectures on Go syntax, so we expect students to be able to learn the basics of the language on their own.


We will have live lecture on Mondays, Tuesdays, Wednesdays and Thursdays, 12:30–2:00 PM PT. This is the listed lecture time on the course schedule. Lectures will start at Berkeley time (12:40 PM PT).

Lectures will be held in-person in Physics Building 4, and live-streamed online over Zoom. Recordings will be posted shortly afterward.

Discussion Sections

We’ll release two discussion worksheets per week, and TAs will hold two 1-hour sections per week. Monday/Tuesday sections will cover the first worksheet, and Wednesday/Thursday sections will cover the second. Discussion section attendance is not graded, and you can choose to attend any in-person or online discussion section you want. The discussion schedule will be posted on the course calendar.

Office Hours

Office hours will be held at scheduled times available on the course calendar. We will manage office hours by using an online queue. Students (both in-person and online) can queue join the queue on this system. The queue system will notify the student when a TA has picked up their request.


The readings are all linked on the course website and freely available. The majority of readings come from the course textbook, which is freely available for you to use as a study and review resource. All readings are optional (but recommended) unless otherwise indicated.


There will be one midterm exam and a final exam. Exams are mandatory and synchronous (everyone takes them at the same time).

By default, students will be opted in to an in-person exam at the scheduled exam time, in the form of a proctored paper exam. Students may, for any reason, opt out of the in-person exam and instead take the exam online. We will also offer an alternate exam time (both in-person and online) for both the midterm and the final for students who can’t take the exam at the scheduled time. Before each exam, a form will be sent out for students to opt out of in-person exams or select an alternate exam time.

Online exams will be proctored over Zoom. See the exam logistics page for detailed proctoring logistics.


There will be 7 homeworks, released every week and due on Friday nights at 11:59 PM PT. Homeworks will be submitted electronically via Gradescope.


There will be 3 course projects. All projects may be done in groups of two or individually.

For projects with multiple deliverables (e.g. code + write-up), the time of submission will be that of the latest submission. For example, if you submit code 1 day late and the write-up 2 days late, the entire project is considered 2 days late.

We will penalize late project submissions (without extensions) as follows:

Extension Policy

We understand that life is unpredictable, and want to work with you to make sure you are supported. While we do not provide slip days in this course, students may request an extension for any deadline by filling out this form.


We will compute grades from a weighted average, as follows:

The class as a whole is typically curved to the department guidelines for upper-division CS classes. Previous grade distributions on Berkeleytime are also good indicators of the curve.


If you have a question, the best way to contact us is via the class Ed site. The staff (instructors and TAs) will check the site regularly.

If your question is personal or not of interest to other students, please mark the question as private.

Collaboration Policy

We believe that most students can distinguish between helping other students understand course material and cheating. Explaining a subtle point from lecture or discussing course topics is an interaction that we encourage, but you must write your solutions strictly by yourself (with your partner on projects). You must not ask for homework/project solutions on Stack Overflow or other online sites; although you may ask for help with conceptual questions. You must not receive help on assignments from students who have taken the course in previous years, and you must not review homework or project solutions from previous years.

You must ensure that your solutions will not be visible to other students. If you use GitHub or another source control system to store your solutions electronically, you must ensure your account is configured so your solutions are not publicly visible. If you use GitHub, it offers free private repositories that allow you to keep your solutions private; please use one.

Warning: Your attention is drawn to the Department’s Policy on Academic Dishonesty. In particular, you should be aware that copying or sharing solutions, in whole or in part, from other students in the class or any other source without acknowledgment constitutes cheating. Any student found to be cheating will (1) be referred to the Office of Student Conduct, (2) receive negative points on the assignment (i.e., worse than not doing it at all), and, depending on severity, (3) fail the course.


We will be discussing attacks in this class, some of them quite nasty. None of this is in any way an invitation to undertake these attacks in any fashion other than with informed consent of all involved and affected parties. The existence of a security hole is no excuse. These issues concern not only professional ethics, but also UCB policy and state and federal law. If there is any question in your mind about what conduct is allowable, contact the instructors first.

Extenuating Circumstances and Inclusion

We recognize that our students come from varied backgrounds and have widely-varying experiences. If you encounter extenuating circumstances, please do not hesitate to let us know. The sooner we are made aware, the more options we have available to us to help.

In addition, in scheduling exams, we have attempted to avoid conflicts with major religious holidays. If, however, we have inadvertently scheduled an exam or major deadline that creates a conflict with your religious observances, please let us know as soon as possible so that we can make other arrangements.

If something is said in class (by anyone) that makes you feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident so that we can work to address the issue and create a more supportive and inclusive learning environment. Some options:

Campus Resources

Your mental health is more important than this course. Seriously. If you’re feeling overwhelmed or not in control, talk to us and we’ll try to help. Counselling and Psychological Services (CAPS) has multiple free, confidential services:

Also check out UHS’s mental health resources

Support is also available for survivors of sexual violence or harassment. While course staff are Responsible Employees for such incidents, we do have free, confidential services available on campus:

The National Suicide Prevention Lifeline is a 24-hour number any student or faculty/staff person can call to speak with someone about suicide: +1-800-273-TALK (+1-800-273-8255).