Policies

Table of contents

  1. Prerequisites
    1. CS61C Prerequisite
    2. CS61B Prerequisite
    3. CS70 Prerequisite
  2. Lecture
  3. Discussion Sections
  4. Office Hours
  5. Readings
  6. Exams
    1. Remote Exams
    2. Alternate Time Exams
  7. Homeworks
  8. Projects
  9. Grading
  10. Ed
  11. Collaboration Policy
    1. Permitted
    2. Absolutely Forbidden
  12. Student Support
    1. Extension Policy
    2. Extenuating Circumstances & Inclusion
    3. Mental Health & Wellness
    4. DSP
    5. Course Climate
  13. Ethics
  14. Land Statement
  15. Acknowledgements

Prerequisites

The prerequisites for CS161 are CS61B, CS70, and CS61C.

We don’t formally enforce any prerequisites, and the enrollment system should not block you from enrolling or waitlisting if you haven’t taken the prerequisites. We will not drop you if you haven’t taken the prerequisites.

In addition to the prerequisite classes, we assume basic knowledge of C, Python, and Git. 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 a new language on your own.

CS61C Prerequisite

We do not recommend taking CS161 without having taken CS61C (Computer Architecture), or equivalent, first. The content of CS61C is used in the first unit of the class (memory safety). You should not take this class unless you:

  • Understand the C and assembly sections of CS61C (Lectures 1-13 from Fall 2020 CS61C)
  • Can convert between decimal, binary, and hexadecimal
  • Can write a complex C program (100-200 lines)
  • Can use GDB to debug a C program
  • Can read and understand assembly code (e.g. x86 or RISC-V)
  • Can explain how a function is called in assembly (e.g. x86 or RISC-V) Here are some diagnostics you can use to test your CS61C preparedness:
  • Read Chapter 2 of our textbook, and make sure that you can follow along.
  • Make sure you can solve Q1 of this discussion worksheet (solutions).

CS61B Prerequisite

CS61B (Data Structures) is a prerequisite for understanding of basic data structures, familiarity with testing your own code, and familiarity with working on large codebases. This prerequisite is relevant for Project 2.

We try our best to re-introduce any specific CS61B topics as they appear in class, so the actual content of CS61B is not a hard prerequisite.

If you can implement a linked list from scratch, and you’re comfortable testing your own code, and you’re comfortable working in a codebase with 500-1000 lines of code, then you’ve fulfilled the CS61B prerequisite.

CS70 Prerequisite

CS70 (Discrete Math and Probability Theory) is a prerequisite for basic understanding of modular arithmetic/set notation, and the ability to follow mathematical proofs and explanations. This prerequisite is relevant in the cryptography unit.

We try our best to re-introduce any specific CS70 topics as they appear in class, so the actual content of CS70 is not a hard prerequisite.

If you can follow the explanations in this CS70 note on RSA encryption, then you’ve fulfilled the CS70 prerequisite.

Lecture

We will have a 90-minute live lecture on Mondays, Tuesdays, Wednesdays, and Thursdays 12:30–2:00 PM. This is the listed lecture time on the course schedule. Lectures will start at Berkeley time.

We’ll try to livestream lectures over Zoom, but can’t promise that the tech will always work. The link to join lecture remotely is on Ed.

Lectures will be recorded and recordings will be posted. Lecture attendance is not taken.

Discussion Sections

Each TA will hold two 1-hour or 1.5-hour live discussions per week. Monday/Tuesday sections will cover one worksheet, and Wednesday/Thursday sections will cover a different worksheet. Office hours start the week of June 19.

There are three types of discussion sections:

  • Regular discussion sections focus on understanding the current material, and are 1 hour long. At least one regular discussion section will be available on Zoom.
  • Exam prep sections focus primarily on solving previous exam questions, and are 1 hour long. At least one exam prep section will be available on Zoom.
  • Extended-time sections cover material at a slower pace and more in-depth, and are 1.5 hours long. This section will only be offered remotely.

You can attend any discussion sections you want. (For example, you could attend two regular sections and two exam prep sections each week.) Discussion attendance is not taken. We’ll try to post recordings of discussion worksheets, but no promises.

The discussion schedule will be posted on the course calendar by the first day of class.

Office Hours

TAs and instructors will hold in-person and online office hours throughout the semester. We use an online queue to process help tickets.

The office hours schedule will be posted on the course calendar. Office hours start the week of June 19.

Readings

Readings come from the course textbook, which is freely available online. The textbook is optional, and lectures are the main source of truth in cases of ambiguity.

Some other optional textbooks are Introduction to Computer Security by Goodrich & Tamassia and The Craft of System Security by Smith & Marchesini. Contact staff if you want a copy.

Exams

The midterm is on Thursday, July 13, 2023, 5–7pm PT.

The final exam is on Wednesday, August 9, 2023, 4–7pm PT.

Remote Exams

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. Specifically, if you are taking the midterm remotely, you must start your exam at 5pm PT on Thursday, July 13. If you are taking the final exam remotely, you must start your exam at 4pm on Wednesday, August 9.

In order to take the exams remotely, you need to agree to our video proctoring policy, which involves sending us a recording of a continuous video feed of you taking the exam. If you are not comfortable being recorded, you can always take the exam in-person.

We’ll release a form closer to the exams for you to sign up for a remote exam.

Alternate Time Exams

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 Thursday, July 13, 2023, 7–9pm PT. The alternate final exam time is Wednesday, August 9, 2023, 7–10pm PT. There are no other alternate exam times. There are no remote exams at alternate times.

We are only offering the alternate exam time if you are unable to take the exam at the normal time. For example, if you have another exam at the same time, you can take the alternate-time exam. However, wanting a break between non-conflicting exams would not be a valid reason to take the alternate-time exam, because in this case you are able to take the exam at the normal time.

We’ll release a form closer to the exams for you to sign up for an alternate-time exam.

Homeworks

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. Homeworks cannot be turned in late unless you have extensions or accommodations.

If you’re auditing the class and would like access to homeworks, or you would like blank practice copies of the homework to study with, you can join the CS 161 Auditors Gradescope class with the join code G2DR3D.

Projects

There will be 3 course projects. All projects may be done in groups of two or individually. Projects cannot be turned in late unless you have extensions or accommodations.

Projects 1 and 3 can be submitted as often as you like before the deadline. Most students receive a full score on the coding portions of these projects.

Project 2 has a coding portion with hidden autograder tests. We will only run tests on your code and release scores after you have made your final submission. The average score on the coding portion of Project 2 is around 60%, and the score distribution is similar to an exam distribution.

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.

Before you’ve submitted your final work for a project, you should never be in possession of solution code that you (or your partner) did not write. You will be equally culpable if you distribute such code to other students or future students of CS 161 (within reason).

You must ensure that your solutions will not be visible to other students. DO NOT GIVE ANYONE YOUR CODE! DO NOT POST SOLUTIONS TO PROJECTS ONLINE. 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. If you’re not sure what you’re doing is OK, please ask.

Listed below are some non-comprehensive examples of what is allowed, and disallowed.

Permitted

  • Discussion of approaches for solving a problem. Such help should be cited as comments in your code. For the sake of others’ learning experience, we ask that you try not to give away anything juicy, and instead try to lead people to such solutions.
  • Discussion of specific syntax issues and bugs in your code, without showing another student your code. Verbally discussing syntax issues is permitted, but Zoom screen sharing your code, for example, is never permitted. Cite any non course staff (course staff meaning Reader, TA, and Instructor) person you received advice from.
  • Using small snippets of non-161 code that you find online for solving tiny problems such as code for iterating through a map in Go. Such usages must be cited in comments in your code.

Absolutely Forbidden

  • Typing or dictating code into someone else’s computer.
  • Looking at someone else’s project code to understand a particular idea or part of a project.
  • Possessing project solution code that you did not write yourself or another student’s project code in any form, be it electronic or on paper. This includes the situation where you’re trying to help someone debug. Distributing such code is equally forbidden.
  • Posting solution code to any assignment in a public place (e.g. a public git repository, mediafire, etched into stones above the Mediterranean, etc). This applies even after the semester is over.
  • Using automatic code generators such as OpenAI Codex and Github Copilot.
  • Working in lock-step with other students. Your workflow should not involve a group of people identifying, tackling, and effectively identically solving a sequence of subproblems.

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 acknowledgement 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.

This policy is not a game to be defeated, and such circumventions will be seen as plagiarism.

Student Support

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, please request an extension for any deadline by filling out this form.

For projects with multiple components (e.g. code + write-up), we’ll calculate your submission time using the latest component you submitted. For example, if you submit code 1 day late and the write-up 2 days late, the entire project is considered 2 days late.

Extenuating Circumstances & Inclusion

We recognize that our students come from varied backgrounds and have widely-varying experiences. As instructors, our goal is to teach you the material in our course. The more accessible we can make it, the better. 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. We believe in the crucial importance of creating a learning environment that is welcoming and respectful to students of all backgrounds. The following are specific steps that will help us in achieving this goal:

  • If you feel your academic performance has been impacted negatively due to a lack of inclusion, or due to experiences outside of class such as current events or family matters, please reach out to the instructors and staff. Our job is not only to teach but to support you in every way we can.
  • 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 are:
  • If 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 your name differs from your legal name, you may designate a preferred name for the classroom by following these steps.
  • Pronouns can be different for each student and should not be assumed. If you are misgendered by staff or another student, please respond however is best for you in the moment. If you’re open to letting us know about the incident via email (cs161-staff@berkeley.edu) or through the anonymous reporting form, we would really appreciate it, so we can both make sure you are appropriately addressed and continue to build habits of inclusion in our staff.
  • If you’re in need of laptops, Wi-Fi hotspots, or other required technologies, check out the Student Technology Equity Program.

Mental Health & Wellness

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, depression, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce a student’s ability to participate in daily activities. UC offers services to assist you with addressing these and other concerns you may be experiencing. If you or someone you know are suffering from any of the aforementioned conditions, consider the following services available to you:

DSP

We committed to creating a learning environment that meets the needs of its diverse student body including students with disabilities. If you anticipate or experience any barriers to learning in this course, please feel welcome to discuss your concerns with the instructors. If you have a disability, or think you may have a disability, you can work with the Disabled Students’ Program (DSP) to request an official accommodation. The Disabled Students’ Program (DSP) is the campus office responsible for authorizing disability-related academic accommodations, in cooperation with the students themselves and their instructors. You can find more information about DSP, including contact information and the application process here. Students registered with DSP can expect to receive an onboarding email within a week of sending us your formal letter of accommodation through the AIM portal.

Course Climate

As a member of the CS 161 community, realize that you have an important duty to help other students and staff feel respected in helping create an inclusive learning environment. It is our expectation that all interactions with course staff and other students will demonstrate appropriate respect, consideration, and compassion for others. Please remember to be friendly and thoughtful; our community draws from a wide spectrum of valuable experiences. For further reading, please reference the Berkeley Principles of Community and Berkeley Campus Code of Student Conduct. For exceptionally rude or disrespectful behavior toward the course staff or other students, your final grade will be lowered by up to a full letter grade (e.g., from an A- to a B-) at the discretion of the course instructors. You don’t need to be concerned about this policy if you treat other human beings with even a bare minimum of respect and consideration and do not engage in behavior that is actively harmful to others.

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.

Land Statement

We recognize that Berkeley sits on the territory of Huichin, the ancestral and unceded land of the Chochenyo Ohlone, the successors of the historic and sovereign Verona Band of Alameda County. This land was and continues to be of great importance to the Ohlone people. We recognize that every member of the Berkeley community has, and continues to benefit from the use and occupation of this land, since the institution’s founding in 1868. Consistent with our values of community and diversity, we have a responsibility to acknowledge and make visible the university’s relationship to Native peoples. By offering this Land Acknowledgment, we affirm Indigenous sovereignty and will work to hold University of California Berkeley more accountable to the needs of American Indian and Indigenous peoples.

Acknowledgements

Parts of the syllabus have been adapted from CS61A, CS61B, CS61C, CS188, and CS152.