Skip to main content Link Search Menu Expand Document (external link)

Last updated: January 15, 2024

Spring 2024 listing on


Q1: Will the course expand?

We don’t know. (And we still won’t know even if we know your waitlist position, so please don’t email us to ask.)

In the past three semesters (Fall 2023, Spring 2023, and Fall 2022), we were able to expand the class to enroll all interested students, but we cannot promise that the same will happen in Spring 2024.

We will not have any information about potential course expansion until the first full week of the spring semester (January 22, 2024), at the earliest.

Q2: What are my chances of getting off the waitlist?

We don’t know. You could check Berkeleytime for enrollment trends from past semesters, but there are no guarantees as to how past trends will extrapolate to Spring 2024.

Besides past trends, we have no way to estimate your odds of getting off the waitlist. If you’re on the waitlist, we strongly recommend having a backup plan in case you are unable to enroll.

Q3: I’m not a declared L&S Computer Science or College of Engineering major. Can I enroll in the class?

Sorry, course staff is not in charge of enrollment. We have to follow the department’s enrollment policies, which restricts CS 161 enrollment to declared L&S Computer Science or College of Engineering majors only.

If you are not part of this group, you cannot enroll or waitlist in the class. We don’t have enrollment codes to hand out or any other way to circumvent this policy.

If you have further questions, please reach out to the emails listed in the linked document.

Q4: I plan to declare CS this spring. Can I enroll in the class after I declare?

If your declaration is processed in time, and the enrollment system lets you enroll in the class, we can let you enroll. However, it is your responsibility to keep up with the class before you enroll. We can give you access to all the assignments while you wait to enroll (see Q5 below).

Q5: I plan to declare and enroll later. Can I keep up with assignments before I officially enroll?

Yes, we can add you to the course Gradescope and Ed forum. There will be a form (will be linked on this page, closer to the start of the semester) that you can fill out to request access.

Q6: I’m a concurrent enrollment student. When can I enroll in the class?

The department processes concurrent enrollment applications, not us. Concurrent enrollment applications are scheduled to be processed in the first full week of the spring semester (January 22, 2024), at the earliest. Please check this page later for updates; we have no additional information at this time, so please do not email us about concurrent enrollment until this page is updated.

Please don’t email us asking to be added to the class before your application is processed. There won’t be any assignments due until the first batch of applications are processed. If you submit an application after the first batch is processed, see the later questions for getting added to the class (within 48 hours), and the policies for enrolling late.

Q7: Can I audit the class?

All course materials that we can share with auditors will be posted publicly on the course website. Also, on the policies page, there is a link to a public Gradescope class that you can join.

Q8: I officially enrolled in the class, or filled out the form requesting to be enrolled, but I don’t have access to Gradescope/Ed.

We sync the rosters once a day, so you may need to wait a bit before being automatically added to the class. If you’ve been officially enrolled for 48 hours and haven’t been added, send an email to Please don’t ask us about being added until 48 hours have passed; we don’t have time to manually add each student.

Q9: How do I enroll late in the class?

It is your responsibility to keep up with the class before you enroll.

If you enroll late, you need to be fully caught up with the class within 3 days of enrolling. If any assignments are due before the date you enroll, you can submit a request through the extensions form (linked on the website) for up to 3 days after you enroll, so that your submission is not counted late.

You can attend lectures and discussion sections before you are officially enrolled. The course website will publicly post any recordings, videos, and resources.

If you’d like early access to the homeworks, you can use the ungraded copy on the auditors Gradescope class (link on the policies page), though you will need to re-fill out the homeworks when you are added to the official Gradescope.


Q10: When are the exams?

The midterm is on Thursday, February 29, 2024, 7–9pm PT.

The final exam is on Friday, May 10, 2024, 3–6pm PT. (Source: Registrar website.)

Q11: Can I take this class remotely? Do you offer remote exams?

We don’t have any parts of the class that require in-person attendance, so if you take the entire class remotely, we won’t know.

However, this class is officially listed by the university as in-person, so not all aspects of the class will have remote support. For example, some resources like office hours may be in-person only. Also, we reserve the right to require in-person attendance at our discretion. For example, if you are found engaging in academic misconduct on an exam, we may require you to take all future exams in-person.

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 7pm on Thursday, February 29, 2024. If you are taking the final exam remotely, you must start your exam at 3pm on Friday, May 10, 2024.

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.

Q12: Do you offer 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 immediately after the scheduled time. The alternate midterm time is Thursday, February 29, 2024, 9–11pm PT. The alternate final exam time is Friday, May 10, 2024, 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.

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.


Q13: Do you formally enforce prerequisites?

No. The enrollment system should not block you from enrolling or waitlisting if you haven’t taken the prerequisites (CS61B, CS70, CS61C). We will not drop students who haven’t taken the prerequisites.

Q14: Should I take this class without CS61B or equivalent?

CS61B is a prerequisite for understanding of basic data structures, familiarity with testing your own code, and familiarity with working on large codebases. 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.

Q15: Should I take this class without CS70 or equivalent?

CS70 is a prerequisite for the ability to follow mathematical proofs and explanations. 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.

Q16: Should I take this class without CS61C or equivalent?

We don’t recommend it. Unlike the other two prerequisites, 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 write a non-trivial 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)

As a diagnostic, you can read Chapter 2 of our textbook. If you can follow along, then you should mostly have fulfilled the CS61C prerequisite.

Q17: Can I take this class concurrently with CS61C?

We don’t recommend it. CS61C takes 5 weeks to cover all the prerequisite content we use, and we use the prerequisite content heavily in the first 5 weeks of class.

Q18: How can I study for the class ahead of time?

If you must take this class without CS61C, or concurrently with CS61C, or you don’t feel confident in your CS61C prerequisite knowledge, then we recommend watching Lectures 1-13 from Fall 2020 CS61C beforehand.

CS161 course content doesn’t change substantially between semesters, so to study ahead, you can reference any past semester website for publicly-available resources. For example, here is the Spring 2023 website.

Other questions

If you have a question that wasn’t answered above, you can email Please don’t email instructors or TAs directly; you will get a faster answer by emailing