Official Academic Guide course description: https://classes.berkeley.edu/content/2021-fall-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.


We will be using three textbooks:

  • P&H: The first edition of Patterson and Hennessy's Computer Organization and Design RISC-V Edition book ("P&H"), ISBN 0128122757.
  • K&R: The C Programming Language, Second Edition by Kernighan and Ritchie. We 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.
  • WSC: The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines, which is freely available on our website.

Teaching Plan

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

LectureThere will be 3 hours of lecture material per week. The lecture will be synchronous over Zoom and recorded for later viewing if you prefer asynchronous. Starting in the 3rd week we will also have a small live audience space for those who want to attend in person.
LabLabs are required and have assigned sections. Each lab has work and checkoff components. You may optionally work on labs with one partner.
DiscussionBoth in person and remote 1-hour discussions will be held once per week. A pre-recorded "archival-quality" discussion of TAs going over the worksheet is also available. Attendance is not taken.
Office HoursTAs and instructors will hold office hours both on Zoom and in person. 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.
ExamsMidterm: 2 hours
Final: 3 hours
Please see our exam logistics page for more information.

Office Hours

We hope you take advantage of the office hours we have scheduled this term, and we will support both in-person and remote office hours. When coming to office hours for lab or project help, there are some policies you'll need to abide by.

Please do not expect TAs to debug your code. This is not a good use of their time, and part of the goal of this course is to turn you into a great tester and debugger. However, the TAs can help you find and fix your bugs.

Therefore, before coming to office hours, you should have:

  • Run valgrind and fixed all memory leaks/ & compiler warnings
  • Written a test that isolates/demonstrates the issue (NOT a staff-provided test)
  • Stepped through the test with a debugger to find the area of code with the issue
  • Checked that the problem still occurs on the hive machines, unless the assignment supports local machines

If you have not completed all of the items above, a TA will request that you complete them before they can help you. There are instructions for testing as part of all project specifications, and the first few labs cover Valgrind, (C)GDB, and debugging.

Computer Resources

Note: If you are blocked from accessing our resources, you can use the campus VPN: https://www.lib.berkeley.edu/using-the-libraries/vpn.

Discussion Forum

All important course announcements will be made on Piazza. We will be automatically enrolling everyone.

Piazza Etiquette

  • Search before posting. Your question may have already been answered by us or other students in the past. Reading other students' posts will let you refine your question, and 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 open-ended or vague questions such as: "How does C work?" or "How come the solution to a discussion problem is this?". If you walk us through your thoughts and reference specific lines that you find confusing, we can better address the problem you are facing. Being specific helps us uncover any misunderstandings that you may have.
  • Post questions about assignments as public follow-ups on the corresponding assignment post. For example, post your questions about Homework 1 on the Homework 1 post. If your question is too detailed or revealing to fit as a follow-up, your question would be better answered during office hours.
  • 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.
  • No follow-up +1's. Instead, you should use the Helpful! button on a question/follow-up. 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 to access computer labs and instructional servers for assignments. This will be covered in Lab 0.

Computer Labs

We will be using the computer labs in Soda Hall (Soda 271, 273, 275, 277, and 330). Registered students get 24/7 cardkey access (though this may change as the in-person situation evolves). Please be mindful of the fact that we share these lab spaces with other CS classes, and please follow the Rules of Conduct on EECS Instructional Computers.

You can remotely connect to the lab computers in Soda 330 using SSH. This will be covered in Lab 0.


In order to foster a collaborative environment, CS61C is 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)
Homework10% (30 points)
Project 112% (36 points)
Project 212% (36 points)
Project 312% (36 points)
Project 412% (36 points)
Midterm12% (36 points)
Final20% (60 points)

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

"Clobber" Policy

if you take the midterm and score better on the final, we will use the z-score of your final exam score to replace your midterm score.


Any assignment which is due by the end of the day is due by 11:59:59PM Pacific Time.


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, completing assignments, reading Piazza pages, etc.}
  • Participation = {Participating in discussion, asking Piazza questions, etc.}
  • Altruism = {Helping other students in lab, answering Piazza or OH questions, etc.}


We will offer both in-person and remote labs. Labs are designed to give you introductory experience with the course material. After completing each lab, you will meet with a course staff member for checkoff. Each lab is graded out of 2 points on correct completion. During checkoff, you will answer a few questions to demonstrate that you have completed and understood the assignment. If your answers to checkoff questions do not demonstrate sufficient understanding of the lab's concepts, you may receive fewer than 2 points. You will only have one graded checkoff attempt, so only request a checkoff when you are ready.

For full credit, labs must be checked off in the week they are assigned. You can get up to half credit for checking off the week after. We will be giving you one lab drop. 25% extra credit is available per lab if you submit the checkoff request within the first hour of your assigned section.

You have the option to work on labs with one partner. Lab partners do not share lab grades; partners can attend checkoff together, but each partner must complete the lab and check off to receive credit.

Sign up for your lab section at the start of the semester. Due to capacity issues, course staff will prioritize help tickets, checkoffs, and lab seats for students enrolled in their lab section. This means that we cannot guarantee that you will be able to check off in lab sections that are not yours, especially in the last few sections of the week. Course staff are not permitted to stay past the end of their sections to check off students from other sections.


Homework is designed to let you practice 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 and graded on correctness.

For each hour that a homework submission is late, 1/72 of your points will be deducted. The lateness penalty rounds up to the nearest hour - that is, an assignment that is 2 hours and 5 seconds late will receive a 3/72 late penalty. We will drop your lowest homework score.


Projects are designed to give you heavy-duty experience with the application of course content. Projects are graded on correctness. You must work on your own for each project.

For each hour that a project submission is late, 1/72 of your points will be deducted. The lateness penalty rounds up to the nearest hour - that is, a project submission that is 2 hours and 5 seconds late will receive a 3/72 late penalty.

You have 72 project slip hours, which can reduce your late penalty for a project by 1 hour. Slip hours are rounded up to the nearest hour. We will automatically apply slip time to your active project submissions to maximize your total score.

Projects are difficult, so don't worry if you don't get 100% on projects! You should ensure you have "activated" the submission you want to use as your final grade. 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. We do not want you to use the autograder as an oracle, since much of programming is actually testing your code.

Academic Integrity

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

You must ensure that your solutions will not be visible to other students. 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.

Warning: Please take a moment to review the Department Policy on Academic Misconduct. 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.

As both current and former students, we understand that desperate times can lead to desperate measures. If you feel like you cannot succeed on your own in the course, let us know! We are here to support you.


For assignments that allow partners, you may collaborate however you like with your partner, as long as you follow the policies above. For example, sharing code with your partner is fine, but sharing code with other groups is not.

Cheating Detection

We will be running advanced 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:

  1. won't work
  2. will be penalized


Plagiarism on any assignment will be reported to the Center for Student Conduct. The CSC treats most first-time offenses as a Non-Reportable Warning. Additionally we will assign a grade penalty. The minimum penalty for cheating on an assignment is negative points, so if an assignment is worth 10 points you will receive -10 points. This means even if there is just a 50% chance that you are caught it is better to not do the work than attempt to cheat. A second instance of plagiarism on an assignment will result in an F in the course.

Disabled Students' Program

The Disabled Students' Program (DSP) supports disabled students at UC Berkeley. They offer a wide range of services and accommodations. If you are facing barriers in school due to a disability, apply to DSP!

As instructors, our goal is to teach you the material in our course. The more accessible we can make it, the better.

Accommodations and Extensions

Some forms:

  • Extension Requests: This is to request extensions on deadlines for any assignments. Requests will be reviewed approximately every two business days. Note that approved lab extensions are rounded up to a week so you can attend your assigned section. Extensions will not be visible on Gradescope and PrairieLearn, but they will show up on grading reports.
  • Lab Section Changes: Need to change your lab section? We open lab switching on weekends, but understand this can't solve all situations. Please submit a request if you need us to move you to a different lab section.
  • Extenuating Circumstances: This form is for any circumstances that can't be resolved with extensions or lab section changes. Don't be afraid to reach out! We're here to help you succeed in our course.

Extenuating Circumstances and Inclusion

We recognize that our students come from varied backgrounds and have widely-varying experiences. 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.


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 to create a more 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). You may also use the department's Student Climate and Incident Reporting Form.

Other resources:

Campus Resources

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. Counselling and Psychological Services (CAPS) has multiple free, confidential services:

Also check out UHS's mental health resources

Support is also available for survivors of sexual violence or harassment. While course staff are mandatory reporters for such incidents, we do have free, confidential services available on campus: