Policies
The prerequisites for CS 161 are:
- CS 61B (Data Structures), for experience working with large codebases (500–1000 lines of code) and basic data structures. This is relevant for Project 2.
- CS 61C (Machine Structures), for understanding of C memory layout and hex/binary number representation. This is relevant for the memory safety unit (Project 1). All necessary CS 61C content will be reviewed during lecture. all necessary CS 61C content.
- CS 70 (Discrete Math and Probability Theory), for basic understanding of modular arithmetic/set notation and some mathematical intuition. This is relevant in the cryptography unit. We will review any necessary CS 70 content in lectures, so don’t worry if you don’t feel very comfortable with all the CS 70 material.
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.
Lecture
We will have live lecture on Mondays and Wedesndays, 5:00–6:30 PM PT, in Dwinelle 155. This is the listed lecture time on the course schedule. Lectures will start at Berkeley time. Recordings will be posted shortly afterward.
An online, synchronous lecture format on Zoom is also available for students requiring online instruction. For students attending lecture over Zoom, we encourage asking questions via Zoom chat. The lectures are designed to be interactive: Please use the Zoom chat to both communicate amongst participants and ask questions. We also encourage students to turn on their camera if they are willing and comfortable, but this is not required.
Discussion Sections
TAs will hold 60-minute live discussions once a week, in-person. All discussions on a given week will cover the material from lecture from the previous week. Students may attend any discussion section they want.
We’ll try to hold a few discussions over Zoom (either fully online, or hybrid, i.e. in-person TA streaming over Zoom), pending TA availability.
The discussion schedule will be posted on the course calendar at the end of the first week of classes.
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.
All office hours will be held in a hybrid format, available to students requiring online instruction.
Readings
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.
Exams
There will be one midterm exam and a final exam. Exams are mandatory and synchronous (everyone takes them at the same time).
- The midterm is on Monday, March 13, 2023, 7–9pm PT.
- The final exam is on Friday, May 12, 2023, 3–6pm PT.
We are offering remote exams only at the same time as the scheduled exam. There will be no remote exams starting at any other time.
If you are unable to take the exam at the scheduled time, we will be offering only one alternate exam time, in-person only, immediately after the scheduled exam. Specifically, the alternate midterm time is Monday, March 13, 2023, 9–11pm PT. The alternate final exam time is Friday, May 12, 2023, 6–9pm PT (we’ll give you a few minutes to walk between exams). There are no other alternate exam times. There are no remote exams at alternate times.
More logistics for the exam will be released closer to the exam date, including a form for you to sign up for a remote exam or an alternate-time exam.
Homeworks
There will be 7 homeworks, released every other week and due on Friday nights at 11:59 PM PT. Homeworks will be submitted electronically via Gradescope.
We will penalize late homework submissions (without extensions) as follows:
- less than 24 hours late, you lose 10%;
- less than 48 hours late, you lose 20%;
- less than 72 hours late, you lose 40%;
- at or after 72 hours, late submissions are no longer accepted without an extension.
Some homeworks contain lab activities, designed to give more hands-on experience with certain, applied concepts in the course. These are shorter than projects but may require more work than standard homeworks.
Projects
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:
- less than 24 hours late, you lose 10%;
- less than 48 hours late, you lose 20%;
- less than 72 hours late, you lose 40%;
- at or after 72 hours, late submissions are no longer accepted without an extension.
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.
Grading
We will compute grades from a weighted average, as follows:
- Homeworks: 10% (equally weighted)
- Project 1: 10%
- Project 2: 20%
- Project 3: 10%
- Midterm: 20%
- Final: 30%
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.
Ed
If you have a question, the best way to contact us is via the course 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.
Ethics
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.