Official Academic Guide course description: https://classes.berkeley.edu/content/2021-summer-compsci-61c-001-lec-001

The subjects covered in this course include C and assembly language programming, translation of high-level programs into machine language, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics.


CS61A and CS61B (or equivalents). The CS61B requirement can be bypassed if you have solid experience with a C-based programming language. Students who have not completed these prerequisites are strongly discouraged from taking this course.


We will be using the first edition of Patterson and Hennessy's Computer Organization and Design RISC-V Edition book ("P&H"), ISBN 0128122757.

We are also requiring The C Programming Language, Second Edition by Kernighan and Ritchie ("K&R"), and will reference its sections in the reading assignments. Other C programming books are also suitable if you are already comfortable with them, but our lectures will be based on K&R. A digital copy of K&R is accessible to Berkeley students through the library system at this link (choose "HathiTrust Digital Library", then use the "Log In" button at the top right of the HathiTrust page).

Finally, we will be using The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines ("WSC"), which is freely available online here.

Teaching Plan

Here’s the overall summary of all the elements of the course:

Summer 2021 Online
LectureThere will be 6 hours of lecture material per week, all delivered asynchronously, and there is no live lecture.
LabYou may have one partner for lab, but you are not required to have one. You and your partner complete labs together (in your own zoom rooms) or in Lab OH. You will EACH then submit the completed lab to the autograder to get full credit. We are not having checkoffs.
DiscussionLive 1-hour discussions will be held two days per week, once on Wednesday and once on Friday. The Wednesday and Friday sections will cover different materials. A pre-recorded “archival-quality” discussion of TAs going over the worksheet is also available. Attendance is not taken. There will also be one 2-hour lost section on Wednesdays and Fridays
Office HoursTAs and instructors will hold office hours on Zoom. We will have 2 types of office hours: Project OH and General OH. Project OH prioritize projects. General OH prioritize everything else. If there are only project tickets, general OH will help with project questions. Instructors will have 1-on-1 appointment slots, for which you can find the signup links on Ed.
ExamsMidterm: 2 hours
Final: 3 hours
All exams occur over a set period of time. Unlimited handwritten cheat sheets. We will be proctoring based on these policies


There will be one midterm, and one final exam, delivered through PrairieLearn system.

  • Midterm: 7/22, 9:30-11:30 AM. Covers up to and including the 7/14 lecture on Pipelining.
  • Final: 8/12, 9:30 AM-12:30 PM. All topics are in scope and are equally emphasised.

You may use unlimited handwritten cheat sheets on the exam. You may not use typed notes, the textbook, or any online resources during the exam. We will be proctoring based on this.. Collaboration on exams will result in an immediate F in the course!

"Clobber" Policy

We will offer a full (z-score) clobber to the midterm from the final. This means that your midterm score will be the max of what your current score and the z-score of the final mapped to the midterm.

Office Hours

In order to reduce queue wait times, help will be limited to 10 minutes. If this is not sufficient, please rejoin the queue. This is designed to make the queuing time both significantly shorter and more predictable.

TAs will not be debugging code endlessly without reason. This is not a good learning practice, they have limited time, and part of the goal of this course is to turn you into a great tester and debugger.

When you join the office hours queue, you will be required to fill in a prompt describing your problem and the steps you have taken to solve it. If you do not fill out the description properly, your ticket will be resolved. Descriptions like “please help”, “I don’t understand how to do this problem”, etc. are not sufficient and will be resolved without help.

Since our office hours will be in an open zoom room, you MUST be in the Zoom room if you are on the queue. If we get to your name and you are not in the zoom call, we will skip you and you will have to sign up again.

We have 2 different types of office hours, each of which prioritize questions differently. Project OH Priorities

  1. Project questions
  2. Non-project questions

General OH Priorities

  1. Non-project questions
  2. Project questions

Computer Resources

NOTE: To access our resources from different places around the world, please download and use the campus VPN: https://www.lib.berkeley.edu/using-the-libraries/vpn.

Discussion Forum

All important course announcements will be made on Ed. We will be automatically enrolling everyone and locking enrollment. Non-enrolled students will not be allowed to join our Ed forum, as we do not have enough bandwidth to answer questions from students who are not enrolled in the course.

Ed Etiquette

  • Search before posting: Sometimes your question may have already been answered by us or other students in the past. This gives us more time to answer new questions.
  • Link and screenshot any external resources you are referring to (exams, discussion, stackoverflow, lecture slides + webcast time/video): It is more convenient for us and other students to look at the screenshot and follow the link if we need more context on the question. It will also substantially decrease the time it takes for us to answer your question.
  • Try to avoid too open-ended/vague questions such as: “How does C work?” or “How come the solution to a discussion problem is this?” or “How does this proof from the textbook work?” It is very difficult for us to know how to help you when we are asked these questions. If you walk us through your thoughts and reference specific lines that you find confusing, we can better address the problem you are facing. It may even help us uncover any misunderstandings that you may have.
  • Please try to post project/homework questions publicly as follow-ups on the appropriate question threads whenever possible. If your question is too detailed/revealing to fit there, that’s a sign that your question is better answered during office hours. We do not have the bandwidth to pre-grade/debug solutions on Ed, so detailed private homework/project questions are discouraged.
  • You should only post in the “Student Answer” box if you are fairly certain about your answer. Do not post follow up questions or +1 in the student answer. Posting in the “Student Answer” section marks a post as resolved and will likely be missed. Use “Follow ups” to follow up while leaving the overall post unresolved.
  • You should NOT follow up with +1’s to a post you agree/like! Instead, you should use the helpful button on a question/followup. We do not allow +1’s because they clutter the post and make it more difficult to get to the unresolved follow-ups.
  • If you want a reply on a follow up, mark it as unresolved, or we may not see it.
  • If you reply to a follow up answering the question at hand, mark the follow up as resolved since it no longer requires attention.

Computer Accounts

You will need a CS61C class account for use in the computer labs, submitting assignments, and tracking your grades. You must request a class login via https://inst.eecs.berkeley.edu/webacct. Make sure you remember your log-in information once you change it! We cannot recover your account information for you. If you are unable to request an account due to concurrent enrollment status, please follow the instructions in lab 0. If you are a late add, you may use any other class account, or your CS199 account until the option to create an inst account for CS61C is available to you. Note: The CS61C staff does not have any control over how quickly concurrent enrollment/late add accounts are processed.

Computer Labs

You can connect remotely to the lab computers using the following addresses:

If the Hive machine you have chosen is running too slow, try another one. You can find a list of the available Hive machines and their current workloads here:


In order to foster a collaborative environment, CS61C is initially graded on a fixed scale. The course is graded out of 300 points, with the following mappings from points to letter grades:

Raw ScoreGrade

In the event that our distribution does not align with the EECS departmental guidelines, we may decrease the raw score boundaries, but they will not increase (i.e. it is possible to receive a higher grade than the mapping suggests, but not a lower one). Please note that we will not include PNP students or Incompletes in any adjustments we do.

We will compute grades from a weighted average, as follows:

AssignmentPercentage of Grade
Labs10% (30 points)
Homework11% (33 points)
Project 112% (36 points)
Project 212% (36 points)
Project 312% (36 points)
Project 412% (36 points)
Midterm11% (33 points)
Final20% (60 points)

Below, you will find sections describing some of these assignment types.


Any assignment which is due by the end of the day is due by 11:59.59PM!


EPA was created to encourage people to be good academic citizens, in a way that traditional grades could not capture. This can help boost you over a grade boundary if you’re close to one. Scoring is confidential (we’ll never tell you your EPA score and you shouldn’t ask), and is decided by the teaching staff, so make sure they know your name.

Here are the categories:

  • Effort = {Office hours, doing every single lab, hw, reading Ed pages, etc.}
  • Participation = {Raising hand in discussion, asking Ed questions, etc.}
  • Altruism = {Helping other students in lab, answering Ed or Office Hrs questions}


  • Lectures are asynchronous. We will be using recordings from the Fall 2020 lectures (which are broken into smaller pieces).
  • Any administrative announcements will be posted on Ed.
  • We have observed that students who stay current with lectures tend to perform better in the class.


Live 1-hour discussions will be held two days per week, once on Wednesday and once on Friday. The Wednesday and Friday sections will cover different materials. These videos are saved and shared. A pre-recorded “archival-quality” discussion of TAs going over the worksheet is also available. Attendance is not taken.


Labs are designed to give you introductory experience with the course material. It is strongly recommended to have a partner to complete the labs; if you don’t know anyone in class, you can use Ed to find a partner. (If the partnership turns out not to work, you can always disband the partnership after a lab and find another partner, there will probably be a fair amount of “churn” the first few weeks.) You’d then work on the lab together with your partner (we’ve found that pair programming works great; one partner sharing their screen as “driver”, while the other partner serves as “navigator” -- then you switch roles every 30m or so). You are NOT required to have a lab partner.

Labs are graded on correct completion. Completion of all labs is highly recommended for success in the course. Each lab assignment is out of 3 points, for a total of 30 points across 10 labs. This directly reflects the points for the lab portion of your overall grade.

For full credit, labs must submit to the lab autograder by the stated deadlines, which are Monday and Thursday 11:59.59PM PT for the labs of the week. If you submit to the lab autograder within a week after the original deadline, you will be able to receive half credit at most (Gradescope will still show full points, but the penalty will be applied when we calculate grades). Anytime after that, you will not be able to get any credit, but you may still submit to that lab autograder to check for your understanding. Please make sure to always activate the correct submission if you choose to resubmit otherwise you will not get credit for the lab. We will NOT change your active submission if it is wrong!

We will be giving you one lab drop which will drop your lowest lab score.

If you are working with a partner, BOTH you and your partner are expected to submit your own code to the lab autograder. If one of you fails to do so, the person who did not submit will NOT get credit or the lab. The lab that you drop does not need to be the same lab that your partner drops.

The staff recommends always asking for help in lab office hours when you need it. Each lab will contain questions you should be able to answer. Some of the questions have a Gradescope autograder while other questions may not be required for points. You should still answer all of them to benefit your learning. The purpose of this is to gauge your understanding and fill in any holes/build on your knowledge of the concepts assessed by the lab questions. If you are unsure of the answer to any of these questions you should ask for help.


Homework is designed to give you more problem practice on the week's material. We encourage you to work on the homework problems in small groups, but each student is required to turn in a solution that they have written themselves.

Homework is done online via PrairieLearn and is graded on correctness. Once again, completion of all HW is highly recommended.

We will release homework solutions shortly after the due date, so late homework is not accepted. There is one homework drop. We will give 3 slip days just for homeworks which may be used on any homework without prior approval. Since we want to release homework solutions as soon as we can, the latest you can turn homework in up to 3 days after the due date.


Projects are designed to give you heavy-duty experience with the application of course content. Projects are graded on correctness.

You may work with one partner on each project. Please see the section on Academic Integrity below.

For each day that a project is late, 1/3 of your earned points on the project are deducted, until the project is worth nothing. Lateness rounds up to the nearest day - that is, an assignment that is 2 hours late is one day late. Please note that projects have a hard deadline of 1 week after it is due. Even if you had a 5 day extension, you would only be able to use up to two of your slip days on it even if you had three.

Projects are difficult, so don’t worry if you don’t get 100% on projects! You should ensure you have set the submission you want to use as your final grade as your 'active' submission. You may change your 'active' submission up until the late due date. We will not change your project submission after the late due date passes regardless of if you did better on another submission. We do not want you to use the autograder as an oracle since much of programming is actually testing your code.

Slip Days

To help you handle any issues that arise, we give you three project slip-day tokens and three homework slip-day tokens, which allow you to reduce your late penalties on late project and homework submissions respectively. There are no slip days for any other assignment. You may use all slip days on a single assignment.

Example usages:

  • Use two slip-days to receive no penalty on a project submitted two days late
  • Use two slip-days to receive no penalty for two separate projects each submitted one day late
  • Use three slip-days to receive just a 1/3 penalty on a project submitted 4 days late
  • We will track the total number of late days for your submissions and automatically apply them to optimize their usage.
  • Slip-days may only be applied towards their specific category, and not any other assignments. Slip-days will not be assessed against assignments you did not submit. No extra credit is awarded for avoiding the use of slip-days, however it is in your best interest to avoid turning assignments in late. Usually, a new project will be released very shortly after the current project is due.
  • Slip days are in terms of "days" meaning a project submitted one minute after the deadline consumes one entire token. Please plan accordingly as there is no grace period for slip days or extensions.

Academic Integrity Guidelines (adapted from CS 186/CS 61B)

“As a member of the UC Berkeley community, I act with honesty, integrity, and respect for others.”

     -- UC Berkeley Honor Code

Learning is a collaborative process, and we don’t mean to discourage the value of your peers. However, we expect all students to read and abide by these guidelines for academic integrity, and to be aware of any penalties. They include specific examples of kinds of work which are meant to be individual and how to proceed when you need help.

During the Spring 2017 semester, CS 61B compiled a list of testimonials from 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.

Please read this policy thoroughly to make sure you understand the guidelines. If you have questions, please talk with your TA.

Here are the guidelines:

  • By You Alone: All project code that you submit (other than skeleton code) should be written by you alone.
  • Do Not Possess or Share Code: Before you’ve submitted your final work for a project, you should never be in possession of solution code that you did not write.

Examples of specific activities are listed below: Permitted:

  • Discussion of approaches for solving a problem.
  • Giving away or receiving conceptual ideas towards a problem solution.

Absolutely Forbidden:

  • Looking at someone else’s project code or custom tests, whether from another student or from a solution for a previous semester from a public repository, to help complete your own.
  • Sharing or distributing your own code with other students or posting it publicly online. For example, keeping code in a private GitHub repository is OK, but doing so in a public one is not.
  • Possessing or distributing another student’s project code in any form. This includes the situation where you’re trying to help someone debug.
  • Possessing or distributing project solution code that you did not write yourself (e.g. a solution that you found posted online on GitHub).
  • 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.


We will be allowing you to work with a partner on some of the assignments, although you can choose to work on your own on those assignments if you wish. You may collaborate however you like with your partner, as long as you obey the above policies when interacting with people in other groups. For example, sharing code with your partner is fine, but sharing code with those in other groups is not.

Cheating Detection

We will be running advanced software plagiarism detection programs. The tools and methods for detecting cheating have been developed over the course of many years, and attempting to obfuscate your code to avoid detection almost certainly won’t work and will be penalized severely.


Plagiarism on any assignment will result in a Non-Reportable Warning and a grade penalty based on the severity of the infraction. The minimum penalty for cheating on an assignment is negative points. This means that cheating on an assignment will harm your grade more than not turning in your assignment. A second instance of plagiarism on an assignment will result in an F in the course. Cases that require adjudication may result in harsher penalties.


As both current and former students, we understand and empathize with the fact that people do things that they ordinarily wouldn’t under extreme situations of stress. Our need to enforce fairness and honesty in the class is balanced by the fact that we don’t wish to wreck anyone’s lives for what may have been a moment of bad judgment in an otherwise honest career. Remember that you have slip days to use over the course of the semester, and if an emergency comes up, you can always request an extension by filling out our accomodations form.

Disabled Students' Program

The Disabled Students' Program (DSP) is committed to ensuring that all students with disabilities have equal access to educational opportunities at UC Berkeley. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. If you have a medical need for extensions of exam times or assignment deadlines, these will be granted through official documentation from DSP. Please start the process at https://dsp.berkeley.edu as soon as possible to avoid delays.

If you already have documentation from DSP, please ensure it has been submitted on the AIM portal so that instructors have access to your accommodations. Please do not email it or post it on Ed!

If you'd like to request an extension in line with your DSP status, please use the form linked here. If your request falls under the accommodations stated in your letter it will be automatically granted, otherwise it will be submitted to the instructors for additional review.

Even if your letter has the accommodations, you must still fill out this form otherwise you will not be granted the extension. We will not be granting extensions if you do NOT request them regardless of if it is in your letter!

If you have any questions or concerns related to your DSP accommodation, please contact our EECS Course Manager, Michael-David Sasson sasson@berkeley.edu, who will be managing all DSP accommodations for the course.

Accommodations and Extensions

If you are a non-DSP student interested in requesting an extension or accommodation for an assignment, you can do so by filling out the form linked here. Note that this form will not automatically grant any extensions; they will be logged and submitted to the instructors for additional review.

We do NOT give extensions for late adding the class. If you have any intention of taking the class but are not enrolled in the class, you must enroll the class (at least being on the waitlist) and you must keep up with the work.

Extenuating Circumstances and Inclusion

Inclusion: We are committed to creating a learning environment welcoming of all students that supports a diversity of thoughts, perspectives, and experiences, and respects your identities and backgrounds (including race/ethnicity, nationality, gender identity, socioeconomic class, sexual orientation, language, religion, ability, etc.)

As a participant in this class, recognize that you can be proactive about making other students feel included and respected. For example, this means when you encounter someone who doesn’t know something, rather than replying with shocked incredulity “What?! You don’t know that?!”, you can effuse with “Awesome, I get to teach you!”. https://xkcd.com/1053/

We recognize that our students come from varied backgrounds and can have widely-varying circumstances affect them during their time in the course. If you have any unforeseen circumstances that arise during the course, please do not hesitate to contact the instructors in office hours or via e-mail or private Ed post to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.

We (like many people) are still in the process of learning about diverse perspectives and identities. 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 to our instructors, head TA, or another member of staff you're comfortable with so that we may address the issue and maintain a supportive and inclusive learning environment. You may also contact the department’s Faculty Equity Advisors (CS) Prof. Josh Hug hug@cs.berkeley.edu or (EE) Prof. Robert Pilawa-Podgurski pilawa@berkeley.edu, the Campus Ombuds Office or the ASUC Student Advocate's Office (SAO).

New this semester: if you do not feel comfortable raising a concern with course staff but still wish to contact the department, in addition to the above contact points, you may also use the department's Student Climate and Incident Reporting Form.

Other resources:

Campus Student Services

Your mental health is more important than this course. Seriously. If you're feeling overwhelmed or not in control, talk to us and we'll try to help. UC Berkeley also offers services to students which you can take advantage of.

Campus resources are also available for survivors of sexual violence or harassment. Be aware that all course staff are mandatory reporters for such incidents. Confidential services are also available on campus: https://survivorsupport.berkeley.edu/Confidential-Resources-Anonymous-Reporting-and-Privacy.