Official Academic Guide course description.

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). CS61B requirement can be bypassed if you have solid experience with a C-based programming language.


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 books are also suitable if you are already comfortable with them, but our lectures will be based on K&R. 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.


There will be two midterms and one final exam.

  • Midterm 1: 2/19 7-9PM. Covers up to and including the 2/12 lecture on basic RISC-V.
  • Midterm 2: 4/8 7-9PM. Covers up to and including the 3/30 lecture on caches.
  • Final: 5/15 3-6PM. All topics are in scope and are equally emphasised.

On each exam, you will be given a RISC-V Green Sheet. Additionally, you will be allowed to bring handwritten cheat sheets as indicated below:

  • Midterm 1: One 8.5”x11”, double-sided cheat sheet.
  • Midterm 2: Two 8.5”x11”, double-sided cheat sheets.
  • Final: Three 8.5”x11”, double-sided cheat sheets (it is recommended that you re-use your cheat sheets from the two midterms).

You will be required to create your own cheat sheet from the template which we will provide to you. You may create it however you would like (typed, handwritten) so long as you use that template as your base. You must create your own cheat sheet. We will be collecting cheat sheets at the end of exams so everyone MUST bring the specified number of cheat sheets (even if they are blank) with your info on it. If you take the exam and DO NOT turn in a cheat sheet, you will receive a 0 on the exam!

“Clobber” Policy

There is no “Clobber” policy this semester.

Office Hours

We hope you take advantage of the ample office hours we have scheduled this term. When coming to office hours for lab or project help, there are some policies you’ll need to abide by.

TAs shouldn’t be debugging code endlessly without reason. 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.

Therefore, before coming to office hours, students should have done the following on the hive machines:

  • Run valgrind and fixed all memory leaks/warnings
  • Written a test that isolates/demonstrates their issue (NOT a staff-provided test)
  • Stepped through the test with (c)gdb to find the line number the issue occurs on

If you have not completed all of the items above, a TA has the right to refuse you assistance. There are instructions for testing on all project specs, and you can review how to run valgrind and (c)gdb in lab.

Computer Resources

Discussion Forum

All important course announcements will be made on Piazza. We will be automatically enrolling everyone and locking piazza enrollment: https://piazza.com/berkeley/spring2020/cs61c. If you are not on the roster and would like to join our piazza, please send an email to [email protected] with the subject ‘[CS61C Sp20] Request to join Piazza’. You must give us the reason why you would like to join the piazza. We will then only add the email which the email was sent from IF it is a Berkeley email. If you would like to join our other resources, please make sure you also fill out this form: https://forms.gle/MK87bBVZzgZFzsCP8

Piazza 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. Also you will avoid having us link to another post as an answer.
  • 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. Also, you probably have whatever you are referring to opened already.
  • 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?” This keeps us guessing on what you are really stuck on. 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 Piazza, 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.
  • 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.
  • If you don’t seem to understand the given responses to your question, come to OH and mark your question as a conceptual question when putting yourself on the queue. Conceptual questions, which are questions on discussions, past homeworks, concepts (ie from the textbook or lectures) and this semester’s exams get priority over homework or project questions. It is sometimes much easier to explain questions in a one on one setting where staff can articulate their points through illustrations.
  • Excessive spam will result in a ban for at least a day! While we are here to help you learn, we are not the only tool you should use! If we find you posting a lot of excessive posts/followups asking for someone to answer a different post in a short period of time, we will ban you. Also if you have a question, try to think on it for an hour and use your other resources: the textbook, Google, Stackoverflow, etc to see if someone has already answered the question you had. Also feel free to come to office hours!

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

We will be using a combination of 271 Soda, 273 Soda, 275 Soda, and 330 Soda this semester. You will be receiving 24/7 key card access to these labs, but please be mindful of the fact that we share these lab spaces with other CS classes. In addition, please respect the labs by keeping things neat and avoid eating/drinking near the computers.

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


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 Score Grade
290+ A+
[270,290) A
[260,270) A-
[250,260) B+
[230,250) B
[220,230) B-
[210,220) C+
[190,210) C
[180,190) C-
[140,180) D
[0,140) F

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

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

Assignment Percentage of Grade
Labs 5% (15 points)
Homework 10% (30 points)
Projects (4 total) 40% (120 points)
Midterm 1 10% (30 points)
Midterm 2 10% (30 points)
Final exam 25% (75 points)

Below, you will find sections describing some of these assignment types. Projects are evenly weighted unless otherwise mentioned.

Note: Any assignment which is due by the end of the day is due by 11:59.00PM! Even if you submit a second late (aka 11:59.01PM), it will be considered one day late!


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 Piazza pages, etc.}
  • Participation = {Raising hand in discussion, asking Piazza questions, etc.}
  • Altruism = {Helping other students in lab, answering Piazza or Office Hrs questions}
  • iClicker = {Attendance at lectures, you don’t need to be right however}


Labs are designed to give you introductory experience with the course material. After completing each lab, you will need to complete an in-person checkoff. Remote checkoffs, or checkoffs in office hours/discussion are not allowed. This process should be very quick and involves showing a TA or Academic Intern that you have completed the assignment. You will have ONE attempt to be checked off. You will then provide your cs61c login (cs61c-xxx) and the TA will check you off. This will automatically upload a token to Gradescope with the number of points the TA is giving you for that assignment. Make sure you have a valid token on gradescope after checkoff as we will NOT fix errors later on. We will also adjust the due time after the due date has passed to prevent student self uploads. The staff is not liable for missing checkoff points and any attempts to receive credit after the deadline will not be fulfilled.

Labs are graded on correct completion. Completion of all labs is highly recommended for success in the course. Each of the labs are graded out of 2 points. If a TA is not satisfied with your lab checkoff (i.e. The student does not fully grasp the concepts the lab was teaching), you may receive fewer than 2 points! Please note that these are not 2 points each from the 15 points “Labs” portion in your course grade. Each lab is simply graded out of 2 points, and we will scale the lab total to the 15 points course grade portion.

In each lab, we will maintain two queues: a checkoff queue and a help queue. The checkoff queue is strictly for students who completed the entire lab and wish to receive a checkoff. Ideally, checkoffs should be quick and efficient. The help queue is for students who need help completing the lab. Please do not use the checkoff queue to request help, even if it is shorter. You will only have one official checkoff attempt.

You are required to work in partners for labs. For full credit, labs must be checked off by the end of the last lab section of the week they were assigned. If you get checked off the week after, you would be able to receive half credit. You will not be able to be checked off after that. Because of this, we will be giving one lab drop which will drop your lowest lab score.

The staff recommends always asking for help on labs when you need it, and to only request a check off when you have thought about the lab sufficiently and can have an informed conversation with your TA. Each lab will contain questions you should be able to answer, even though we will not explicit ask them to give you points. 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 gradescope and is graded on correct completion. Once again, completion of all HW is highly recommended. We will release homework solutions shortly after the [late] due date, so late homework is not accepted. There are no homework drops.

Homeworks will give you unlimited attempts.


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

You will work on projects individually. Collaborating with other students is strictly prohibited. Please see the section on Academic Dishonesty 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.

Projects are difficult, so don’t worry if you don’t get 100% on projects! We also have a philosophy on autograders: we only provide visible sanity tests. So there will be immediate feedback that your code compiles and runs on a simple test case but you won’t be able to see the results of the tests that are used to determine your grade. 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 slip-day tokens, which allow you to reduce your late penalties on late project submissions.

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 projects, and not any other assignments. Slip-days will not be assessed against projects 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 projects 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.

Academic Dishonesty and Cheating

Please carefully read the policies below and ask a member of the course staff if you have any questions or if something is unclear.

  • All work that is to be done INDIVIDUALLY should be YOUR work and your work ALONE.
  • All partner work should be done by your project team ALONE (no discussing or sharing solutions or algorithmic approaches with other partners)
  • You are encouraged to help each other debug without viewing each other’s code or talking specifically about algorithms. Beyond that, we don’t want you sharing approaches, ideas, code or whiteboarding with other students.
  • It is NOT acceptable to copy solutions from other students.
  • It is NOT acceptable to copy (or start your) solutions from the Web.
  • It is NOT acceptable to leave your code anywhere where an unscrupulous student could find and steal it (e.g., public GITHUBs, walking away while leaving yourself logged on, leaving printouts lying around, etc.
  • We have tools and methods, developed over many years, for detecting this. You WILL be caught, and the penalties WILL be severe. This software can even detect attempts to purposefully obfuscate copying. If you have questions whether a behavior is crossing the line, ask!
  • At the minimum negative points will be given for the assignment (meaning you’re better off NOT submitting anything than cheating), and a letter in your Cal record documenting the cheating. Penalties can be greater, including an F in the class.
  • Both the giver and the receiver of code are equally culpable and suffer equal penalties.

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 its been submitted on the SCARAB portal so that instructors have access to your accommodations. Please do not email it or post it on Piazza!

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.

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

For students who do not have DSP accommodations for extensions, if your partner is DSP and receives an extension, your will receive an extension too. To receive this extension, you must fill out the non-dsp request saying your partner was given a dsp extension and the name of the partner.

Extenuating Circumstances and Inclusiveness

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

If at any point you are made to 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. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider contacting the Campus Ombuds Office or the ASUC Student Advocate’s Office (SAO).

If you’d like to report an incident, but feel uncomfortable doing so in person, you’re also welcome to use your TA’s EPA form.

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.