This page covers the course policies for CS 161. This course is intended to be a survey course in computer security. As such, we cover a wide range of material quickly and assume familiarity with many concepts from computer systems.


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.


The prerequisites for CS 161 are CS 61B, CS 61C, and CS 70. We assume basic knowledge of Java, C, and Python. You will need to have basic familiarity with Unix systems.


The class does not have a required textbook. We have not found one that fully treats the material covered in the course, and we want to help you save money, so please don’t feel obligated to buy a textbook. However, we know that some students appreciate additional reading to supplement lectures; for them, we recommend Introduction to Computer Security by Goodrich & Tamassia. We also recommend The Craft of System Security by Smith & Marchesini. We will list readings from these textbooks in the schedule, but these are entirely optional.

However, there are some readings which have been created by the course staff, or are freely available online. These readings are mandatory, we consider them in-scope for exams, homeworks, and projects.

Discussion Sections

Discussion sections will sometimes cover important material not presented in lecture, and we expect you will attend. Outside of your discussion section, you should feel free to attend any of the staff office hours (not just your section TA’s office hours) and ask any of us for help. You can attend any discussion section you want, but if it is too crowded, please try a different one.

Lecture and Course Notes

We will provide lecture slides for many of the lectures. These materials are not a substitute for attending class, as our discussion in class may deviate from the written material. The course staff will also be creating a set of course notes that we will release on various course topics. These readings are also mandatory, and may include information not covered in lecture or section. You are ultimately responsible for material as presented in lecture, section, and course notes.


If you have a question, the best way to contact us is via the class Piazza site. The staff (instructors and TAs) will check the site regularly, and if you use it, other students will be able to help you too. You can also use Piazza to answer other student questions. We will (through an unspecified method) assign bonus points for students who consistently help others on Piazza, see grading. In order to further encourage student interaction, instructors will typically wait a little bit to give students the opportunity to answer questions first.

If your question is personal or not of interest to other students, please mark the question as private: select “Post to: Individual Student(s)/Instructor(s)” at the top and then type “Instructors” in the field underneath it. If you wish to talk with one of us individually in person, you are welcome to come to any of our office hours. We prefer using these methods instead of sending email; regrettably, email does not scale well to a class of this size.



There will be two midterm exams and a final exam. All exams are mandatory.

If you will be unable to attend any of the dates, make a private Piazza post during the first week of classes. We will not offer alternate exam times. While we don’t devote any resources to policing it, we do not officially support taking another course with lecture at the same time as ours. If you are considering taking another course with a final exam at the same time, if they don’t offer an alternate exam, you will presumably need to choose between CS 161 and that other course.


There will be four to five homeworks. Homeworks will be submitted electronically via Gradescope.

No late homeworks are accepted.


There will be three course projects.

We will penalize late project submissions as follows:

Note that this late policy applies only to projects, not homeworks (homeworks cannot be turned in late).

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 homework solution strictly by yourself. 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.

Regrading Policy

Any requests for grade changes or regrading must be made within one week of when the work was returned. To ask for a regrade for material graded on Gradescope, submit a regrade request on Gradescope. We will provide procedures to request regrades for other coursework when those are graded. We will not accept verbal regrade requests. Note that a regrade can result in a decreased score as well as an increased score, if upon revisiting we discover problems in your work that we previously overlooked.

Bear in mind that a primary aim in grading is consistency, so that all students are treated the same. For this reason, we are unlikely to adjust the score of individual students on an issue of partial credit if the score allocated is consistent with the grading policy we adopted for that problem.


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.


The following tips are offered based on our experience with CS 161:

  1. Don’t wait until the last minute to start projects! The projects can be time-consuming. Pace yourself. Students who procrastinate generally suffer.

  2. Make use of office hours! The instructors and TAs hold office hours expressly to help you. It is often surprising how many students do not take advantage of this service. You are free to attend as many office hours as you wish. You are not constrained just to use the office hours of your section TA. You will likely get more out of an office hour visit if you have spent some time in advance thinking about the questions you have, and formulating them precisely. (In fact, this process can often lead you to a solution yourself!)

  3. Participate actively in discussion sections! Discussion sections are not auxiliary lectures. They are an opportunity for interactive learning. The success of a discussion section depends largely on the willingness of students to participate actively in it. As with office hours, the better prepared you are for the discussion, the more you are likely to get out of it.