Course Format

CS 186 will be in-person this semester, which means all meetings, such as lectures, discussion, office hours, etc. will happen in person. Lecture videos/webcasts will be posted for each topic after the live lecture has been given. Discussion sections and office hours are listed in the Discussion Sections and Office Hours sections, respectively.

EDIT: As of January 7, 2022, the first two weeks of this course will be completely remote (lecture, discussion, office hours), in accordance with campus policy. We plan to continue instruction in person on 1/31.

A warning: please try and stay up to date, as previous offerings of the course have shown that it is deceptively difficult to catch up if you fall behind.

While we will not be enforcing these prerequisites for enrollment, we will expect students to have taken CS 61A, CS 61B, and CS 61C. This class is project-heavy, and there will almost always be a project assigned to you throughout the semester. Students have noted an increase in difficulty compared to offerings of this course predating Fall 2018. We expect proficiency with Java (around the level taught in CS 61B) in order to work on the projects, with the exception of Project 1. Projects vary in difficulty. You can find more information about them in the Projects section below.

Before continuing, please make sure you are enrolled in the course Gradescope here, using your UC Berkeley credentials. Please also enroll in the course Piazza here, as Piazza is our primary method of communication and making announcements, and you are responsible for checking it frequently.

Course Materials

Vitamins: Vitamins are short, weekly assignments on Gradescope designed to keep you on schedule and check your understanding of the basics from lecture. Vitamins must be submitted on time! However, your lowest two vitamin scores will automatically be dropped at the end of the semester. You also have unlimited tries for each question of every vitamin. Vitamin explanations will display when you have gotten the correct answer. If you are struggling with any of the questions on the vitamin, you are encouraged to come to office hours for help.

Resources: We have a variety of resources to help you throughout the course, such as course notes, past exams, individual TAs’ discussion slides, exam prep section worksheets, and more. We will be posting these to Piazza throughout the semester, and they will also be available on the course website. In addition, we have a public course Drive, where most of the resources will be available or be posted. Project announcements and updates will be released through Piazza, but the instructions will be released in the CS 186 Projects Gitbook (see the sidebar), and the starter code will be released through Github Classroom.

Discussion Sections

Discussion sections are a highly recommended component of this course, and you may attend whichever section(s) you like. In discussion, you’ll learn more in depth about the previous week’s content and you’ll have the opportunity to ask your TA relevant conceptual questions. We also offer a specially designated LOST Section targeted towards students that feel behind or lost regarding the course. It will be 1.5 hours long, and will spend extra time on conceptual fundamentals, building all the way up to exam-level practice. Anyone is welcome to attend. All discussion sections will start on the week of January 24; you can find a list of discussion sections under the Calendar tab above.

If you cannot make it to in-person discussions, we will post discussion recordings online after all in-person discussions have concluded. Discussion attendance is not mandatory, but we highly encourage you to attend in-person if possible.

Office Hours

Office hours are a great place to go for help with projects or any other content-related questions. Administrative OH will be held remotely by Lakshya Jain and Kaitlyn Lee, and are solely dedicated to administrative and logistical questions regarding the course, such as extension requests, alternative exam requests, and personal issues. You can find a list of office hours under the Staff tab on this page. The course calendar under the Calendar tab also shows the office hours for the week. We will be using an online office hour queue] for all office hours besides admin office hours. Please make sure to read and follow the OH ticket description policy before queueing.

We will have limited office hours meant specifically for online tickets, and this will be indicated in the calendar event. Due to demand at in-person office hours, it is unlikely that we will be able to accommodate answering online tickets during in-person OH.


At the very start of the semester, we will be releasing Project 0, designed to check your familiarity with the course policies and to help you set up the software used in the programming assignments. This assignment will not be graded. Throughout the semester, we will release programming assignments via Piazza, each worth varying percentages of your grade (see the Grading section for more details). The instructions for each project will be released on our Gitbook. They are designed to cover distinct parts of the course and are done in SQL (Project 1) and Java (all other projects). We will try to hold at least one project party for each, but the time, location, and logistics will be announced much closer to the due dates.

Late Policy: You will get 7200 slip minutes (equivalent to 5 days of slip minutes). Slip minutes applied to one part of the project do not apply to another part of the project. Slip minutes are automatically used in the manner that will optimize your score the most. After using all your slip time, you’ll be docked ⅓ of your score for the project each extra day late on your project submission.

Submission: Make sure that the submission currently selected on Gradescope is the submission you want graded. If you would like to have a different submission graded, you can select the submission you want graded on Gradescope within a week of the regular deadline and before grades are released.

Extension: If you need an extension on a project, fill out this form. If you are a DSP student and your accommodation letter allows for extensions, please fill out this form: DSP Extensions <= 3 days will be automatically accepted.

We do not give extensions on vitamins, as mentioned above. Instead, the lowest 2 scores will be dropped.

For extensions that are longer than three days, we ask that students without formal DSP accommdations for extensions please provide documentation.

Setup Help: If you have any questions regarding specific project debugging or software help that pertains towards setting up your machine properly to complete the coursework successfully, make a public post on Piazza.


Your total score will be calculated as follows:

  • Vitamins: 10%
    • There will be a number of vitamins throughout the semester, generally released every Monday and due on the Monday the week after at 11:59 PM PDT (7 days total).
    • Your lowest 2 vitamin scores are automatically dropped at the end of the semester. These are meant to account for emergencies or other circumstances that prevent you from completing the vitamins.
    • We will also be releasing a pre-semester quiz at the start of the semester, which will count towards this category. You cannot drop your pre-semester quiz score.
  • Projects: 40%
    • There will be five projects, of varying weights based on their difficulty.
    • Project 0 is not graded. Project 1 is worth 6%, Project 2 is worth 7%, Project 3 is worth 9%, Project 4 is worth 9%, and Project 5 is worth 9% - We reserve the rights to alter the weights during the semester if needed.
  • Exams: 50%
    • Quiz: 5%
    • Midterm : 15%
    • Final: 30%
    • We will not offer an alternate exam time for the Quiz. Your quiz score will be replaced by the better of your quiz score or your midterm score, based on raw percentages.
    • All exams are planned to be in person, but we will adhere to university guidelines regarding COVID. Remote accommodations are granted on a case by case basis only. Please email us ASAP at, and at least two weeks before any exam.
    • Regular and alternate exam times are to be determined - more details will be released on Piazza.
      • We only allow alternate exam requests for direct conflicts.
    • Alternate exam requests are due two weeks before the date of the corresponding exam.
    • We reserve the rights to alter the weights during the semester if needed.

Some other key notes on grading:

  • The class will be curved to fit within EECS departmental guidelines, but specific bin and curve-related data will not be released to students.
  • Participation on Piazza and in discussion/office hours may positively influence your semester grade. Work that you submit must be your own. We will run the latest software duplication checkers on all your assignments.
  • We will follow the EECS departmental policy on academic honesty, so be sure you are familiar with it. And hey — don’t cheat. Not cool.


There is no required textbook for this class, but we will suggest recommended readings from the textbooks listed on the Resources page for recommendations.

Other Questions & Exceptional Circumstances

Piazza is the main method of communication for this course, and all announcements about the course will be posted there. Join it ASAP if you haven’t already. For administrative and logistics issues, late alternate exam requests, DSP accommodations, or for emergencies or personal issues that you do not feel comfortable posting on Piazza, please email You can also visit administrative OH to discuss these issues.

Adding the Course Late

We reserve the right to set the grading policy for those who add the class late. Please make sure you check with staff before adding.