Policies

Warning: these policies are not finalized. We'll be updating them over the following week.

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.

Prerequisites

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.

Textbook

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 will also be using 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:

ComponentSummary
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
10 handwritten cheat sheets are allowed and we will provide a copy of the RISC-V "Green sheet" as well. Exams will be offered primarily in person, but we will support remote exams using online proctoring for those who need a remote exam.

More details about some components are located below.

Exams

There will be one midterm, and one final exam.

  • Midterm: Covers up to and including the 9/27 lecture on CALL.
  • Final: All topics are in scope and are equally emphasised.

You may use 10 handwritten cheat sheets on the exam. You may not use typed notes, the textbook, or any online resources during the exam. The online proctoring procedure will be released shortly. Collaboration on exams will result in an immediate F in the course!

"Clobber" Policy

We are not currently planning on offering clobbering.

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 endlessly 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 their 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 has the right to refuse you assistance. There are instructions for testing as part of all project specifications, and the first few labs cover Valgrind, (C)GDB, and debugging.

Computer Resources

If you are blocked from accessing our resources, you may 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 Piazza. We will be automatically enrolling everyone and locking enrollment. Non-enrolled students will not be allowed to join our Piazza forum, as we do not have enough bandwidth to answer questions from students who are not enrolled in the course.

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.
  • Link and/or 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?". It is very difficult for us to know how to help you when we are asked vague 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 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 followups 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 followup, mark it as unresolved, or we may not see it.
  • If you reply to a followup answering the question at hand, mark the followup 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.

Grading

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

Deadlines

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

EPA

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}

Labs

Labs are designed to give you introductory experience with the course material and we will offer both in-person and remote labs. After completing each lab, you will meet with a course staff member for checkoff, where you will answer a few checkoff questions to demonstrate that you have completed the assignment.

Labs are graded on correct completion. Completion of all labs is highly recommended for success in the course. Each lab is graded out of 2 points. If your answers to checkoff questions do not demonstrate sufficient understanding of the lab's concepts, you may receive fewer than 2 points.

At the start of the semester, you will sign up for a lab section. 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 will not stay past the end of their sections to check off students from other sections. Checkoffs outside of labs (e.g. in discussion or OH) are not allowed.

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 a lab is assigned. We will drop your lowest lab score. We will give 25% extra credit per lab if you submit the checkoff request within the first hour of your assigned section.

You may optionally 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.

The staff recommends always asking for lab help when you need it. You will only have one graded checkoff attempt, so checkoff should only be requested when you have thought about the lab sufficiently and can have an informed conversation with your TA. If you are unsure of the answer to any checkoff questions, we recommend that you ask for help before requesting checkoff.

Homework

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 and graded on correctness. Once again, completion of all HW is highly recommended.

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

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. Please see the section on Academic Integrity below.

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. Each slip hour 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.

Please note that projects have a hard deadline of 1 week after the normal deadline, so that we can release results. For example, if you have a 5 day project extension, you would only be able to use up to 2 slip days on it, even if you have 3 slip days.

Projects are difficult, so don’t worry if you don’t get 100% on projects! We will only be grading your "active" submission for a project. You may change your active submission up until the late deadline. 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.

Academic Integrity

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

Guidelines

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 permitted activity:

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

Examples of forbidden activity:

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

Partners

We allow partners on some assignments. 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 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.

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

Note

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 using the accomodations process covered in the following sections.

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

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

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

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 extensions form. Note that this form will not automatically grant any extensions; they will be logged and submitted to the instructors for additional review.

Because this is a fast-paced course, we do NOT give extensions for late adding the class. If you have any intention of taking the class, you must enroll in the class (at least being on the waitlist) and you must keep up with the work. Currently, it appears we will be able to add all students at the start of the semester.

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!" (XKCD 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 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.

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 [email protected] or (EE) Prof. Robert Pilawa-Podgurski [email protected], the Campus Ombuds Office or the ASUC Student Advocate's Office (SAO).

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.