Policies
Prerequisites
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). If you want to check your preparedness with CS 61C material, we have a review lecture of 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 you to be able to learn the basics of the language on your own.
Lecture
Lecture will be available in two formats: a live lecture format and a pre-recorded lecture format. We will ensure that both formats cover the same material.
Live Lecture
We will have live lecture on Mondays, Tuesdays, Wednesdays, and Thursdays, 3:30–5:00 PM PT over Zoom. This is the listed lecture time on the course schedule. Lectures will start at Berkeley time (3:40 PM). Recordings will be posted afterward.
During the lecture, but 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. One discovery we learned last semester is that text-based chat actually improves the lecture feedback loop. If you are willing and comfortable, we also encourage you to turn on your Zoom video, but this will not be required.
Discussion Sections
TAs will hold 60-minute live discussions twice a week over Zoom. Monday and Tuesday’s discussions will cover the same material, and Wednesday’s and Thursday’s discussions will cover the same material. You can attend any discussion section you want. The discussion schedule will be posted on the course calendar when the semester starts.
We encourage (but do not require) students to enable the camera and microphone for discussion.
Discussion attendance is optional, but minor extra credit (1% of your total grade) may be available for attendance. Walkthrough recordings of discussion worksheets will be available.
Office Hours
Office hours will be held at scheduled times in Zoom meetings. We will manage office hours by using an online queue. When it is your turn, the queue system will notify you and you will be able to join the meeting with the TA.
Readings
The required readings are all linked on the course website and freely available. The majority of required readings come from the draft course textbook and is freely available for you to use as a study and review resource.
Exams
There will be one midterm exam and a final exam. Exams are mandatory and synchronous (everyone takes them at the same time).
- Midterm: Tuesday, July 13th, time TBD
- Final: Thursday, August 12th, time TBD
We will offer an alternate exam time for both exams if you can’t take the exam at the scheduled time.
We will use several tools to encourage exam integrity. If we told our students, “Exams will be unproctored and we will not do any detection for academic dishonesty,” we would be disappointed if less than 100% of our students cheated. But since we don’t want that, we will use several techniques to detect cheating.
We plan to proctor exams over Zoom. See https://cs161.org/exam for detailed proctoring logistics.
Additionally, we may ask some students to take a short verbal exam as part of our “trust-but-verify” policy. Finally, we have other technical cheating detection measures that we won’t disclose. Based on student feedback, this policy seems as successful as possible for online proctoring. The CS undergraduate groups conducted a survey of remote proctoring strategies used during the fall. Most strategies either were perceived as ineffective (and therefore making it rational to try to cheat) or overly burdensome. The one exception was our strategy for CS 161, which students perceived as both effective and not too stressful.
Homeworks
There will be 7 homeworks, released every week and due on Monday nights (11:59 PM PT). Homeworks will be submitted electronically via Gradescope.
No late homeworks will be accepted, but we will drop your lowest homework score.
If you encounter extenuating circumstances, please let us know by filling out this form.
Projects
There will be three course projects. Projects can be done in groups of two or individually.
You have 3 slip days to use on projects. Slip days are rounded up to the nearest day (i.e. if you submit one minute past the deadline, it counts as using one slip day).
For projects with multiple deliverables (e.g. code + write-up), slip days will be applied using the latest submission (i.e. if you submit code one day late and the write-up two days late, it counts as using two slip days).
We will automatically apply slip days at the end of the semester to maximize your total project score.
We will penalize late project submissions with no remaining slip days 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.
If you encounter extenuating circumstances, please let us know by filling out this form.
Labs
There are two optional labs. These are shorter than projects, but longer than homeworks. You can replace your lab grade with your homework or project grade (whichever is greater).
Grading
We will compute grades from a weighted average, as follows:
- Homeworks: 15% (equally weighted)
- Projects: 30% (equally weighted)
- Labs: 15% (optional)
- Midterm: 15%
- Final: 25%
- Participation: 1% (discussion attendance, posting on Piazza)
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.
Piazza
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.
If your question is personal or not of interest to other students, please mark the question as private: select “Post to: Instructor(s)” at the top and then type “Instructors” in the field underneath it.
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.