Policies

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.

Prerequisites

CS61A and CS61B (or equivalents) or experience with a C-based programming language (e.g. Java, C++).


Optional Reading

There is no official textbook for this class. However, there are three optional textbooks as additional references:

  • P&H: Second 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. 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.

Please contact staff on Ed if you have trouble finding or paying for these textbooks.


Teaching Plan

The following sub-sections contain an overall summary of the major elements of the course.

Lecture

We will have a 50-minute live lecture on Mondays, Wednesdays, and Fridays, 10:00 AM - 11:00 AM PT. Lectures will take place in Pimentel 1. Recordings will be made available after the lecture, and lectures will be livecasted to Zoom.

Discussion

Once a week 1 hour long discussion sections will be held on Mondays and Tuesdays. You can choose to attend any discussion section you want. Discussion section attendance is not graded, although they will count towards your pacing points. See the section on Pacing Points for more information.

We may release pre-recorded discussion walkthroughs, though they are meant as a supplementary material and do not count towards discussion attendance.

Homework

Homework is designed to let you practice the material covered in lecture. 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 submitted online through PrairieLearn and graded on correctness. For each day that a homework submission is late, 1/3 of your points will be deducted. The lateness penalty rounds up to the nearest day - that is, an assignment that is 1 day and 5 seconds late will receive a 2/3 late penalty.

Labs

Labs are designed to give you some hands-on experience with the course material. Once a week 2 hour long lab sections will be held on Wednesdays and Thursdays. Lab section attendance is not graded. We will not release recordings. The first hour of each lab section will be a review of the topics covered in the lab, while the second hour will be a "lab party" style work time for students to work on the lab with other students in the lab. During the second hour, students can request for help from a staff member. You can choose to attend any lab section you want, or work on labs asynchronously. We encourage you to work on the labs in small groups, but each student is required to turn in a solution that they have written themselves.

Lab assignments are autograded on Gradescope. For each day that a lab submission is late, 1/3 of your points will be deducted. The lateness penalty rounds up to the nearest day - that is, an assignment that is 1 day and 5 seconds late will receive a 2/3 late penalty.

Projects

Projects are designed to give you heavy-duty experience with the application of course content. We'll have four projects throughout the course. You may optionally work with one partner for each project. You may not add, change, or remove partners after creating the project repo. Partnerships must be registered on galloc, and adding another student to your Gradescope submission does not create an official partnership.

Projects are submitted to Gradescope and graded on correctness. If you complete a project with a partner, you must add your partner to every Gradescope submission. Also make sure you "activate" the submission you want graded on Gradescope (this defaults to the last submission you made). For each day that a project submission is late, 1/3 of your points will be deducted. The lateness penalty rounds up to the nearest day - that is, an assignment that is 1 day and 5 seconds late will receive a 2/3 late penalty.

Exams

There will be one midterm, scheduled for Tuesday, October 10th, 7:00 PM - 9:00 PM PT.

The final exam will be Monday, December 11th, 8:00 AM - 11:00 AM PT.

Exams will be by default in-person, and you may request an online exam for extenuating circumstances via the exam adjustments form. One in-person only alternate exam will be offered after the scheduled time for conflicts. All other requests will be considered on a case-by-case basis.

The exam adjustments form (required for all alternate exam accommodations), along with more detailed logistics, will be released closer to the exam.

Exam Clobber

If you score better on the cumulative section of the final, we will use the z-score of the cumulative section of your final exam score to replace your midterm score.

More details regarding the final format will be released alongside final logistics, but expect the cumulative section to contain the more difficult questions on the exam.

Office Hours

TAs and instructors will host mostly in-person and extremely few online office hours throughout the semester. We use an OH Queue to process help tickets.

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

Please mark your tickets as conceptual or debugging. For conceptual tickets, TAs will help groups of students at a time (shorter wait time) but cannot look at code. For debugging tickets, TAs will look at you or your group's code, but time per ticket may be limited if the queue is long.


Grading

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:

Course PointsGrade
290+A+
[275,290)A
[265,275)A-
[250,265)B+
[240,250)B
[220,240)B-
[210,220)C+
[190,210)C
[180,190)C-
[140,180)D
[0,140)F
AssignmentPercentage of Grade
Labs10% (30 points)
Homework10% (30 points)
Project 110% (30 points)
Project 210% (30 points)
Project 310% (30 points)
Project 410% (30 points)
Midterm16% (48 points)
Final24% (72 points)

Note: Each of the 9 homework assignments is worth 3 course points (for a total of 27 course points), and everyone will receive the last 3 course points for a total of 30 course points for the homework category.

The bins will not change (i.e. we will not shift the bins or round at the end of the semester). Grade bins target a 3.3 GPA, assuming 65% average on exams and 95% average on other assignments. To normalize exam difficulty variance across semesters, we will do the following: if the exam average is higher than 65%, then nothing will change; if the exam average is lower than 65%, we will adjust the denominator such that the exam has a 65% average. Scores are capped at 100% (i.e. you cannot have a score over 100% from this).

Pacing Points

There are two ways to earn “pacing” points, which are given for keeping up with the class.

  • Attending discussion synchronously in person or online, or watching the pre-recorded videos by the time the weekly self-reporting form is due.
  • Attending lectures synchronously (live or Zoom), or watching the recorded videos by the time the weekly self-reporting form is due.

Each discussion is worth 0.2 pacing points. Each lecture is worth 0.1 pacing point. Thus, with 13 discussions and 40 lectures planned, you may earn up to 6.6 pacing points. We will calculate pacing points using responses to weekly forms, which are sent out every week on Friday and due the following Monday night. Attendance is self-reported, but we reserve the right to verify the integrity of the respondents (so please be truthful).

Pacing points are added to your course points, but cannot increase your total course points beyond 220 points (the minimum grade for the B- bin). In other words, if you have 218 points and 5 pacing points, your final course points will be 220 points.

Amnesty

Amnesty is a blanket policy designed to integrate flexibility into the course.

  • By applying amnesty to an assignment, its due date will be extended to December 17th, 11:59 PM PT (the Sunday after finals week).
  • You may apply amnesty to labs, projects, or homeworks, but you may not apply amnesty towards exams or pacing point forms.
  • You may apply amnesty towards up to 60 points worth of assignments.
    • For example: You may apply amnesty towards Project 1 and Project 4 (30 + 30 = 60 points total), but you may not apply amnesty towards Project 1, Project 4, and Homework 1 (30 + 30 + 3 = 63 points total).
    • Course points are used for this calculation, not the amount of points on Gradescope/PrairieLearn.
      • For example, Project 1 counts as 30 course points, and each lab or homework counts as 3 course points.
    • Project 2A, 2B, 3A, and 3B count as separate assignments.
      • For example, you may apply amnesty to Project 2B without applying it to Project 2A.
      • Project 2A is worth 9 course points, Project 2B is worth 21 course points, Project 3A is worth 6 course points, and Project 3B is worth 24 course points.
    • If you would like to resubmit a project with a partner, both partners must individually include this towards their amnesty limit (and fill out the two forms below accordingly).
  • The number of points each assignment is worth is used for this calculation, not the amount of points you gain as a result of amnesty.
    • For example: If you would like to resubmit Project 1 during amnesty, it counts as 30 points towards this limit, regardless of your current score on the project.
    • This is a hard limit, unless there are extenuating circumstances and you’ve met with a student support TA.
      • If you feel like you were impacted by extenuating circumstances, please submit to the extenuating circumstances/DSP form. Requests are evaluated on a case-by-base basis and are not guaranteed. We encourage you to meet with us as soon as you anticipate exceeding the 60 point limit on amnesty.
      • We define extenuating circumstances as circumstances outside of the student’s control that directly inhibits the student’s ability to complete assignments in a timely manner. Some examples include unforeseen physical/mental health crises, technical issues (broken laptop), family emergency, etc.
  • You may use amnesty to remove lateness or complete work that you haven’t been able to finish throughout the term.
    • For example: If you submitted Project 4 one day late for full credit (and received 20/30 course points due to the lateness penalty), you may apply amnesty towards Project 4. After applying amnesty, you will have a score of 30/30 course points on Project 4, and it would count as 30 points towards the 60 point amnesty limit.
  • All assignments not included in amnesty must be submitted by December 3rd, 11:59 PM PT.
    • Extensions may not go beyond this date. Note that December 3rd is the limit on 5 day extensions for Project 4 and Homework 10.
    • Any submissions after this deadline will receive no credit.

To apply amnesty towards any assignment, you must submit these two Google forms:

  • Anticipated Schedule of Deadlines Form: You must fill out this form to inform us of the assignment(s) that you intend on applying amnesty to.
    • This form is non-binding, and you can change which assignments you’d like to apply amnesty to after submitting this form.
    • This form is due December 4th at 11:59 PM PT.
  • Amnesty Completion Form: You must fill out this form to specify which assignment(s) you would like to apply amnesty to.
    • This form will be released during RRR week.
    • This form is binding.
    • This form is due December 17th at 11:59 PM PT.

Failure to fill out either of the two forms will result in points voided from amnesty.

Getting Help for Amnesty Assignments

For assignments that are a week past the original deadline, we will actively deprioritize these assignments. In other words, we will only take your OH ticket/respond on Ed once all help requests for current assignments have been resolved. We will announce on weekly announcements if that week is anticipated to have less OH demand.

Note that we do not plan on hosting OH or being active on non-exam related Ed threads during both RRR week and finals week.

Administrative Drop

You may be administratively dropped from the course if you do not submit any assignments by September 6th, 2023. If you are currently on the waitlist, or intend on enrolling later, you must keep up with all assignments. We will not be approving extensions for adding the course late, for any reason.


Ed

All important course announcements will be made on Ed (the course discussion forum). We will be automatically enrolling everyone. We will not be answering private Ed questions unless directed by a staff member in office hours.

Ed 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.
  • 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 "answer" box if you are fairly certain about your answer. Do not post follow-up questions or +1 as an answer.
  • No follow-up +1's. Instead, you should use the heart button on a question/follow-up. Excessive +1 follow-ups 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.

Computer Resources

Note: If you are blocked from accessing our resources, you can use the campus VPN.

Computer Accounts

You will need a CS 61C instructional account to access computer labs and instructional servers for assignments. Accounts are available starting on the first day of instruction, and will be covered in Lab 0.

Computer Labs

Registered students get 24/7 cardkey access, starting on the first day of instruction, to the computer labs in Soda Hall (Soda 271, 273, 275, 277, and 330). 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 also remotely connect to instructional computers for class work. This will be covered in Lab 0. If you're connecting from off-campus, you must be connected to the campus VPN (as described in lab 0).


Collaboration and Academic Misconduct

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 can get conceptual help, but you must not share, receive, request, or submit solutions from other sources, such as other students or Stack Overflow. You also may not tamper with any course infrastructure (such as hive machines and the autograder) or exploit loopholes that violate the spirit of the assignment.

You must ensure that your solutions will not be visible to other students. If you use GitHub or another code hosting platform to store your solutions electronically, you must ensure your account is configured so your solutions are not publicly visible. Many platforms offer free private repositories that allow you to keep your solutions private.

For questions that includes any form of randomization (e.g. different variants for each student), you may not share the question, or anything related to the specific variant you received, with anyone else. This includes the question text, any data files provided, and your solution to the variant.

Warning: Please take a moment to review the Department Policy on Academic Misconduct. In particular, you should be aware that receiving, copying, sharing, or viewing solutions, in whole or in part, at any time, from other students in the class or any other source (including "artificial intelligence") without acknowledgement and staff approval constitutes cheating.

Here are some examples of what may be considered cheating:

  • Sharing or receiving a solution from a friend
  • Sharing or receiving a solution from a friend after the assignment is due
  • Sharing or receiving a solution from a friend after the semester is over
  • Submitting a solution from a friend to see what the autograder looks like
  • Looking at a solution that is not yours for "ideas"
  • Looking at a solution on an unattended laptop
  • Using ChatGPT or GitHub Copilot's output as your solution
  • Publicly posting your solutions for any reason, including for your resume
  • Sharing code with another student who is not your registered partner on galloc
  • Forgetting to add your intended partner on galloc and working with them as if you were partners anyway
  • Sharing a specific variant (including numbers and any associated files) of a randomized question

When in doubt, please reach out to staff first.

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, please let us know! We are here to support you.

Partners

For assignments that allow partners, you may collaborate however you like with an officially registered partner. Collaboration policies still apply outside of your partnership. For example, you can collaborate on code with your partner, but not with anyone else.

Assignments that allow partners will specify how you can officially record your partner. This is typically done through galloc, when you get your code repository. We do not recognize partnerships created elsewhere, including Gradescope partnerships.

Warning: You and your partner are both responsible for the work you submit. If your partner cheats, we also need to include you in our misconduct investigation.

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

Penalties

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. For example, if an assignment is worth 10 points, you will receive -10/10 points on the assignment, regardless of your original score. 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.

Submitting Work from Past Semesters

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.
  • If you would like to submit a project using work from past semesters, you cannot have a project partner.

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!

Students registered with DSP can expect to receive an onboarding email within two weeks of sending us your formal letter of accommodation through the AIM portal.

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

  • Extension Requests: This is to request extensions on deadlines for any assignments.
    • Due to the fast-paced nature of this course, we will not be approving extension requests beyond 5 days.
    • Requests will be reviewed approximately every two business days.
    • Extensions may not be visible on Gradescope and PrairieLearn, but they will show up on grading reports.
    • You can submit an extension request at any time, including after a deadline. However, retroactive extensions need to be manually approved by a staff member.
  • Extenuating Circumstances: If you feel like there are any extenuating circumstances affecting you this semester, or you'd like to chat with a student support TA, please fill out this form!

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

In addition, in scheduling exams, we have attempted to avoid conflicts with major religious holidays. If, however, we have inadvertently scheduled an exam or major deadline that creates a conflict with your religious observances, please let us know as soon as possible so that we can make other arrangements.

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 so that we can work to address the issue and create a more supportive and inclusive learning environment. Some options:


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 Responsible Employees for such incidents, we do have free, confidential services available on campus:

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

If you're in need of laptops, Wi-Fi hotspots, or other required technologies, check out the Student Technology Equity Program.