Policies

The CS 61 series is an introduction to Computer Science, with particular emphasis on software and machines from a programmer’s point of view. CS 61A covered high-level approaches to problem-solving, providing you with a variety of ways to organize solutions to programming problems as compositions of functions, collections of objects, or sets of rules. In CS 61B, we move to a somewhat more detailed (and to some extent, more basic) level of programming by focusing particularly on the efficiency of writing programs (design) and running programs (runtime).

This is a course about data structures and programming methods. It happens to also teach Java, since it is hard to teach programming without a language. However, it is not intended as an exhaustive course on Java, creating Android apps, user interfaces, graphics, or any of that fun stuff.

Some of you may have already taken a data structures course, and simply want to learn Java. For you, self-study may be a better option.


Enrollment

If you have questions about enrollment, please see our FAQs page.

Prerequisites

This class assumes you have taken CS 61A, CS 88, or E7, or have equivalent background to a student who has taken one of these courses. The course is largely built upon the assumption that you have taken CS 61A. CS 88 and E7 students may find the beginning of the course to be a bit scarier, particularly when it comes to object oriented programming.

We assume you are coming in with zero Java experience, but we will move through basic Java syntax very quickly. If you already have Java experience, great! We hope that you’ll help out your fellow students in discussion and on our class forum, particularly in the opening weeks when everyone is catching up on Java.

Late Adding CS61B

If you are attempting to officially enroll in CS 61B late in the semester, you must turn in all outstanding course assignments within 5 days of joining the course. This means that you should be following along with the course schedule, even before you enroll in the class.

Please use the Late Add Intent form if you are waiting to be enrolled and need access to course platforms.

If you’d like to meet with course staff for advice on catching up with the course, you can set up a student support meeting.

Alternatives

The 1-unit self-paced course CS 47B is for students with “sufficient partial credit in 61B,” allowing them (with instructor’s permission) to complete the CS 61B course requirement without taking the full course. See our CS 47B page for more information.

To enroll in CS 47B, please email CS advising for more information.


Course Format

Lecture

Lecture is scheduled on MWF, 1–2pm in Wheeler 150.

There will be no Zoom lecture option this semester.

For some lectures, the video links will lead you to pre-recorded studio videos. For other lectures, the video links will lead to live lecture recordings.

If you prefer the live lecture recording over the pre-recorded studio video, there is a playlist at the top of the site with recordings of all live lectures.

Discussion

Discussion sections are 1 hour long and feature a worksheet with problems reviewing the material learned in the past week. Discussion sections will be held in person. We may sometimes post video walkthroughs of the worksheet.

The schedule of discussion sections can be found on the course calendar. Information about the staff running each section can be found on the staff page.

The primary type of discussion section is the regular section. In this section, you will work together with a group to solve problems with the guidance of a TA. Regular discussion section requires you to be officially signed up. To sign up for a regular section, please go to https://sections.datastructur.es/.

We are also currently hosting the following drop-in sections. These sections do not require signup:

  • Bridge (2hr): This is a two-hour discussion section intentionally organized for students who are not as familiar with the material that week, and want more emphasis on the concepts before diving into the discussion worksheet. It’s a great way to get a little more comfortable with the topics and receive more structure guidance during the section. The material and difficulty covered during the bridge discussion section will be the same as the regular discussion section, and we’ll have an extended mini-lecture to reinforce conceptual understanding.
  • Exam-level (1hr): Exam-level sections are faster-paced sections that cover problems that are taken from or inspired by old exams.

Labs / Office Hours

In office hours, you can get help from our staff with the different assignments, exam preparation, logistical matters, and any advice you may need. We will hold both in-person and online office hours.

Thursday and Friday office hours in Soda are considered “lab office hours”. During these office hours, TAs will take time at the beginning of each hour to provide mini-lectures and/or group guidance on any currently due assignments.

We will use the online Office Hours Queue to keep track of students in Office Hours.

Readings

There is no required textbook for the class, but here are some optional readings:


Communication

  • Course Website: All assignments, resources, and links will be posted on the website.
  • Ed Discussion: This is a Q&A form where you can contact staff (here’s a guide for how to use it). Ed response times are quicker than email. For sensitive matters, you can make private questions on Ed, which are only visible to you and staff.
  • Course emails: Use these to send emails to staff.
  • Beacon: You can track your grades and extensions on Beacon. (We do not use bCourses; we use Beacon instead.)
  • Gradescope: Programming assignments are submitted on Gradescope.

Do not directly email instructors or TAs; we will not answer those emails.


Coursework

There are eight aspects of the course for which you earn points:

  1. Weekly Surveys
  2. Discussion Attendance
  3. Homeworks
  4. Mini-Projects
  5. Projects
  6. Exams
  7. Lecture Attendance (Exam Recovery Points)
  8. Extra Credit Surveys

Weekly Surveys

To help us keep track of your progress and sentiment about the course, there will be 12 weekly surveys due on Tuesdays at 11:59 PM, with a 24 hour grace period.

Weekly surveys are worth 6 points each, and you may earn a maximum of 60 points from surveys. That is, submitting 10 weekly surveys will receive full credit (i.e. you can skip 2). Submitting more will not yield extra credit.

Discussion Attendance

There are two grading tracks for the class: Discussion Track (D) and No Discussion Trackand Track (ND).

For students who sign up for Track D, each section you attend is worth 7.5 points up to a maximum of 75. For students who sign up for Track ND, your design projects will have greater weight than Track D students.

Homeworks

There will be at least 10 required homework assignments in the course.

All homeworks are completed solo, without partners.

All homeworks are worth 20 points each, and you may earn a maximum of 140 points from homework. If you earn additional homework points, you will not receive extra credit. All homeworks will be submitted on Gradescope.

Homeworks will be labeled as either “coding” or “theory”.

  • On coding homeworks, you will write small Java programs.
  • On theory homeworks, you will answer questions about lecture material.

See the extensions page for the lateness policy.

Projects

In addition to the homeworks, there will be 3 programming mini-projects and 2 large-scale design and programming projects. As the course progresses, the projects will give you increasing freedom.

All projects except the last one (Project 5) are completed solo, without partners. The last project (Project 5) must be completed in groups of 2.

  • Mini-projects (0, 1, 2, 3): Each mini-project is worth 90 points. You may earn a maximum of 300 points on the mini-projects.
  • Design projects (4, 5): These large-scale design and programming projects are worth 400 points each. You may earn a maximum of 800 points on the projects.

On the mini-projects:

  • We will specify the functionality of the system (i.e. what it’s supposed to do) and the API of the system (i.e. the exact signatures of the methods and classes).
  • Your job will be to implement the required API.

On Project 4:

  • We will specify only the functionality of the system (i.e. what it’s supposed to do).
  • However, the API and implementation will be left up to you.
  • There may be a required design review. More soon.

On Project 5:

  • You will have a great deal of freedom. You will decide what your system is supposed to do, the API to achieve that goal, and of course the implementation.
  • Project 5 will have a synchronous checkoff portion. We’ll release instructions about how to sign up for a checkoff in the last week of class.
  • You will either be able to choose a partner to work with or request to be paired up with another student who has similar working habits and goals as you.
  • One of the main goals of CS 61B is to give you the tools to become a successful software engineer, one of which is the ability to work effectively with others. Barring extreme circumstances, we will not approve for students to officially work alone on this project. If you think you have a compelling reason for working alone on this project, we will release a form that you can fill out closer to the release of the project (keep an eye on Ed for this) - we will let you know if your request is approved shortly before the release of the project.
  • Full details on partnerships can be found in the project spec (released later).

If you’re on the no-discussion track, your project scores will be multipled by 875/800.

See the extensions page for the lateness policy.

Exams

There will be three exams in the class:

  • Midterm 1 (325 points): Computer Based
  • Midterm 2 (500 points): Paper Based
  • Final (800 points): Paper Based

Midterm 1 will be taken in the Computer Based Testing Facility. You will be given two programming problems drawn from a problem bank, and must solve them in the alotted time. Each usage of the autograder beyond the first submission will incur a large penalty, so you are encouraged to write tests for your code as learned on the mini-projects and HWs.

All students are required to take midterm 1 by the end of week 6. Students may retake the midterm later in the semester at any time until the end of RRR week. Pending available slots in the CBTF, more than one retake may be available upon request.

Midterm 2 and the final will be standard paper based exams. For more, see the exam policies page.

Lecture Attendance (Exam Recovery Points)

For each lecture you attend after lecture number 2, you will earn 3 exam recovery points (ERPs), up to a maximum of 75 exam recovery points. That is, you must attend 25 lectures to max out your ERPs.

Each exam recovery point you earn is worth 1 - E/980 points towards total score, where E is your score on midterm 2 + the final (after clobbering).

For example, suppose you:

  • Earn 343 final exam points.
  • Earn 217 midterm 2 points (after clobber).
  • Attend 24 live lectures.

Then you’ve earned 24 * 3 = 72 ERPs, and E is 560. Each exam recovery point is worth 1 - 560/980 = 0.423 points, so 30.46 points are added to your overall score.

Extra Credit

Extra credit is very limited in this course:

  • Pre-semester survey (5 points)
  • Mid-semester survey (5 points)
  • End-of-semester survey (5 points)
  • Official university course evals (up to 10 points)

Grades

Your letter grade will be determined by the total points out of the possible 0. In other words, there is no curving in this course, other than the clobbering policy described on the exams page. Your grade will depend on how well you do relative to the bins, and not on how well everyone else does. Though we do not usually do this, we reserve the right to lower the the grading bins for 61B if grades are too low. We will not raise them.

Category Points (Track D) Points (Track ND)
Weekly Surveys 60 60
Discussion Attendance 75 0
Homeworks 140 140
Mini-Projects 300 300
Design Projects 800 875
Midterm 1 225 225
Midterm 2 550 550
Final Exam 850 850
Total 3000  
A A- B+ B B- C+ C C- D F
TBD TBD TBD TBD TBD TBD TBD TBD TBD TBD

These bins (will have been) were designed to comply with departmental guidelines that the average GPA for a lower-division required course be in the range 2.8–3.3 (including students who drop or take the class for a P/NP grade).

We will round all grades up to the nearest multiple of 10 (e.g. 300.01 rounds to 310). This is the only rounding we will do. Please do not contact us about further rounding or exceptions.

If you are taking the course P/NP, any grade of C- or better will automatically be converted to a P. (Source: Registrar’s office.)

We will grant grades of Incomplete only for dire medical or personal emergencies that cause you to miss the final, and only if your work up to that point has been satisfactory. Do not try to get an incomplete simply as a way to have more time to study or do a project. That is contrary to University policy. Before requesting an Incomplete grade, please contact a college advisor or review your college’s Incomplete grade policies to understand if this is a right option for you.


Student Support

Mental Health and Wellness

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, 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 utilizing the confidential mental health services available on campus. We encourage you to reach out to the Counseling Center for support. An on campus counselor or after-hours clinician is available 24/7.

The National Suicide Prevention Lifeline is a 24-hour number any student or faculty/staff person can call to speak with someone about suicide: (800) 273-TALK (8255).

More resources can be found under our Resources tab.

If you’re experiencing extenuating circumstances impacting your mental health and would like to meet with a member of course staff to work out accommodations within the course, or would like to be connected to more resources, you can set up a meeting with us here.

Accommodation

UC Berkeley is 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. If you have already been approved for accommodations through DSP or are working through the process, you can schedule a student support meeting with course staff here to ask any questions or develop an implementation plan if needed.


Collaboration and LLM Policy

LLM Policy

Coming soon

Collaboration Policy

Deadlines can be stressful, and we know that under extreme pressure, it becomes tempting to start rationalizing actions that you would otherwise consider inappropriate. Perhaps you’ll find yourself facing a CS 61B project deadline, and under all this stress you’ll convince yourself that you’re just going to cheat for the moment so you can get the points, and that you’ll come back later and really learn the thing you were supposed to have learned in order to restore your karmic balance (I’ve heard something along these lines a few times). Please don’t do this. We care that you learn the material, and that your grade reflects your learning, regardless of the timeline. If you feel that you need to engage in academic misconduct to meet a deadline, please reach out to course staff.

During the Spring 2017 semester, we compiled a series of incident reports written by students who were caught plagiarizing. If you find yourself tempted to cheat, you might turn to the words of others who have made the wrong choice for guidance.

Collaboration Policies
Homeworks, Mini-Projects, and Design Project Class assignments were created for learning. As such, they are intended to be completed primarily on your own (or with your partner on Project 5, which requires partners), particularly when it comes to writing the actual code. We do, however, encourage high-level discussion with peers and course staff (more details below).
Exams For exams, we will be absolutely unforgiving. Any incident will result in a failing grade for the course, though Berkeley will let you retake CS 61B next semester. As above, all incidents of cheating will be referred to the Office of Student Conduct.

What constitutes cheating? The golden rule of academic dishonesty is that you should not claim to be responsible for work that is not yours. This is obviously open to some interpretation, and you’ll be getting some help from instructors, the internet, other students, and more throughout the course. This is OK, and we hope that the class is an open, welcoming, collaborative environment where we can help each other build the highest possible understanding of the course material. To help (but not entirely define) the bounds of acceptable behavior, we have three important rules for coding assignments:

  • By You Alone: All code that you submit (other than skeleton code) should be written by you and your partner alone, except for small snippets that solve tiny subproblems (examples in the Permitted section below).

  • Do Not Possess or Share Code: Before you’ve submitted your final work, you should never be in possession of solution code that you (or your partner) did not write. Looking up solution code online is effectively possessing solution code. You will be equally culpable if you distribute such code to other student or future students of 61B (within reason). DO NOT GIVE ANYONE YOUR CODE – EVEN IF THEY ARE DESPERATELY ASKING. DO NOT POST SOLUTIONS ONLINE (on GitHub or anywhere else)! If you’re not sure what you’re doing is OK, please ask.

  • Cite Your Sources: When you receive significant assistance on a coding assignment from someone else, you should cite that assistance somewhere in your source code with the @source tag in a comment. We leave it to you to decide what constitutes ‘significant’. However, citing does not change the extent of collaboration or reference allowed. Examples:

    Examples:

    // @source I worked with [person], the code below receives a list of objects
    // and iterates through the list until it finds the number 3 and
    // returns the index.
    ...
    
    // @source From https://stackoverflow.com/questions/16242733/sum-all-the-elements-java-arraylist,
    // the following code iterates through the list and sums its values.
    ...
    
    // @source This code was generated by ChatGPT. It reads and parses
    // all integers from the file, which I then pass into my computeSum method.
    ...
    

For clarity, some examples of specific activities are listed below:

Permitted:

  • High-level discussion of approaches for solving a problem.
  • Giving away or receiving significant conceptual ideas towards a problem solution. Such help should be cited as comments in your code. For the sake of other’s 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.
  • Using small snippets of code that you find online for solving tiny problems (e.g. googling “uppercase string java” may lead you to some sample code that you copy and paste into your solution). Such usages should be cited as comments in your code!

Permitted with Extreme Caution:

  • Working on a project alongside another person or group of people. Your code should not substantially resemble anyone else’s!
  • Sending code to someone at a company when you are applying for a job. You should never send code publicly. Rather, you can add the recipient as a private collaborator to your Github repository.

Absolutely Forbidden:

  • Typing or dictacting code into someone else’s computer is a violation of the “By You Alone” rule.
  • Possessing another student’s code in any form before a final deadline, be it electronic or on paper. This includes the situation where you’re trying to help someone debug. Distributing such code is equally forbidden.
  • Possessing solution code that you did not write yourself (from online (e.g. GitHub), staff solution code found somewhere on a server it should not have been, etc.) before a final deadline. Distributing such code is equally forbidden. Looking at solution code online counts as possessing code.
  • Posting solution code to any assignment in a public place (e.g. a public git repository, Google Drive, Discord, etched into stones above the Mediterranean, etc). This applies even after the semester is over.
  • 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.

Please also refer to the LLM Policy section for more details on what is permitted use of LLMs. If 61B is causing massive disruption to your personal life, please email cs61b@berkeley.edu or talk to one of our student support staff here.

In essence, our ultimate goal is for students to grasp the code they’ve crafted. It’s not just about completing projects; it’s about cultivating a deep comprehension of their code. We assign these projects to give you an opportunity to build a strong foundation in coding, ensuring that you truly understand the core principles behind the concepts we teach in this course.

Obviously, the expressive power of Java is a subset of the English language. And yes, you can obviously obey the letter of this entire policy while completely violating its spirit. However, this policy is not a game to be defeated, and such circumventions will be seen as plagiarism.

The misconduct page has more details on how we resolve misconduct cases.

Reusing Your Own Code

If you have completed assignments during past semesters and would like to reuse your work, you do not have to let staff know ahead of time. However:

  • We cannot promise that the assignments are identical across semesters.
  • By submitting work from past semesters, in part or in whole, you are claiming that the work submitted is completed entirely by you (and if applicable, your former project partner). If you are unsure if the work is your (and if applicable, your former project partner’s) original work, we’d recommend redoing the assignment from scratch.
  • If you intend to reuse code for Project 5 (a partner project), you may be required to work alone. If you had a project partner while working on your project originally, you may submit the portions of the projects that they completed.

Auditing CS61B

This is for students who are unofficially auditing this class. Maybe you are a non-Berkeley student who wants to brush up on your programming knowledge or even a high school student who wants to get a head start on your programming career. If this sounds interesting to you, we have set up a public autograder for the Spring 2021 version of the course.

To get everything set up, go to Gradescope and select the “Add a course” button. Enter course code MB7ZPY to be added.

If you’re auditing the course, you will not be able to access Beacon, and you will not receive a student repository. Instead, you should skip the Beacon step in Homework 1, and directly clone the skeleton repo to get a copy of the starter code.

That’s all you have to do! All lectures, worksheets, and specs will be available on the Spring 2021 Website. Note: you should be using the Spring 2021 skeleton, website, and gradescope. You will not be using any resources from this current semester. Every term we change assignments and lectures up a little bit, so make sure to stick to the Spring 2021 verion of things.

We cannot add auditors to private platforms (e.g. bCourses, Ed, current semester’s Gradescope). All the information we can publicly share is available on this course website.

We also cannot offer staff support (e.g. debugging help) for auditors.


Table of contents