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

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

### Teaching Plan

(thanks to John DeNero and the CS61A team, as well as Kara Nelson of the College of Engineering for their version that this document was based on)

In Spring 2021, CS61C is planning to try a new teaching plan to better support students and encourage participation during this unusual online offering of the course.

#### Guiding Principles Moving Online

In particular we are going to start by creating study groups of 4 using Prof. Ranade’s study group creating tool. This tool is designed to create effective groups of students and was used successfully in 16A last semester. Although participation in the group creation is optional, you are strongly encouraged to participate as this has proven to be a highly effective tool in creating durable study groups even in the remote context.

Flexibility, Community: Online classes taught during a time of wildfires, power outages, and a worldwide pandemic need to have policies that support students in different living situations, and in different time zones. They need to have a way that the students can get to know each other, learn from each other, and study with each other. They need to have a way the course staff can get to know their students, and (most importantly) check in with them to make sure their health and learning is going ok. The deadlines need to have flexibility in case a student or team needs some more time to finish a project or homework. We believe we have built all of that into our class this semester.

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

Spring 2021 Online
Lecture TuTh lecture for an hour and a half. Clicker questions after every lecture, which earn credit. These are due 48 hours after the lecture is given. If you choose to watch lectures asynchronously, we strongly recommend scheduling a time in your calendar every week for watching the lecture to help you stay on track.
Lab You and your partner do them 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. Instead, we will be having checkin’s about once a month. More will be explained below.
Checkin’s This semester, we will have two check-ins. These will be 8 minute sections where you will meet with a TA to discuss anything you want. You can even use it as office hours. You must attend it as it is worth separate course credit. More will be explained below.
Discussion Four live 1-hour discussions spread out through Thursday, Friday, and Monday. These videos are saved and shared. A pre-recorded “archival-quality” discussion of TAs going over the worksheet is also available. All four will cover the same material and the same worksheets. Attendance is not taken.
Office Hours TAs and faculty will hold office hours on Zoom. We will have 3 types of office hours: Lab OH for lab questions, Project OH for project questions, and Regular OH for anything else. Please note that a TA can help you at anything at any of the office hours though unrelated questions will not have priority. Faculty add 1-on-1 appointment slots.
Project Office Hours We will have additional office hours spread out closer to the due dates of the projects. They will be held via Zoom.
Exams Midterm: 2 hours
Final: 3 hours
All exams occur over a set period of time. Open book, open note, closed internet. We will be proctoring based on this.

## Exams

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

• Midterm: 3/17 9:00AM-11:00AM PT. Covers up to and including the 3/4 lecture on Pipelining.
• Final: 5/13 8:00AM-11:00AM PT. All topics are in scope and are equally emphasised.

Exams are open book, open note, closed internet, no collaboration of any kind. Note that you may not use Google Docs, Google Sheets, Google slides or similar platforms. You may download them instead. We will be proctoring based on this. (We will update this link once we have finalized our exam policies). Collaboration on exams will result in an immediate F in the course!

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

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.

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 just a staff-provided test)
• Stepped through the test with (c)gdb to find the line number the issue occurs on

There are instructions for testing on all project specs, and you can review how to run valgrind and (c)gdb in lab.

When a TA takes your ticket, they will ask you to show that you do not have any compiler warnings or memory leaks. Please ensure that you have this pulled up so that you can show the TA quickly. If you have compiler warnings or memory leaks, the TA will not be able to assist you until this is fixed (unless your question is about how to fix the compiler warnings or memory leaks).

Before joining the queue, you must add the following to your problem description in order to help the TA better understand what you need help with and to ensure that you have attempted to debug your code before coming to office hours.

If your question is conceptual/homework/lab (non-debugging), fill in the prompt below: Detailed question:

If your question is project/lab (debugging), fill in the prompt below: Have you fixed all compiler warnings? Have you run valgrind and fixed all memory leaks? Detailed question: Steps have you taken to solve this problem:

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. Examples of good descriptions:

conceptual/homework/lab (non-debugging): Detailed question: I am having a hard time understanding when you should use malloc(). I understand that malloc will store data on the heap, and that this data will remain allocated until you call free(), but I don’t understand when you should allocate data using malloc() vs when you should allocate data on the stack.

Debugging: Have you fixed all compiler warnings? yes Have you run valgrind and fixed all memory leaks? yes Detailed question: I am getting a segfault in my code for Project X. I have determined that it is occuring in the function example_func(). I have also figured out that it only happens when the parameter example_param is greater than 16. Steps have you taken to solve this problem: I have run my code through gdb which helped me determine that the error is occurring in example_func() when example_param() is greater than 16. The segfault is occurring on line 57 when I try to access an element in the example_array.

Since our office hours will be in open zoom rooms, 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 3 different types of office hours: Normal OH (includes Head TA and Instructor OH), Lab OH, and Project OH. Each of them has a priority of types of questions which they will answer. Normal OH will prioritize homework, exam, and conceptual questions. It then will take project questions, and finally take lab questions last. Lab OH will take lab questions first but also take any other type of question if there are no lab questions. Project OH will take project questions first, then homework, exam, and conceptual questions next. It will finally take Lab questions last.

## 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 Piazza. We will be automatically enrolling everyone and locking piazza enrollment: https://piazza.com/berkeley/spring2021/cs61c. We have decided to no longer allow for non-enrolled students to join our Piazza. We decided this because 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. 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.
• 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 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.
• 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.
• If you don’t 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!
• Anonymous Posting Keep in mind that, if you are posting anonymously, you can’t edit posts, so be careful before clicking the Submit button. Please avoid long chains of 1-2 sentence follow ups; it unnecessarily extends the thread and makes it much harder to follow people’s thought processes and find questions that need answers. These may be removed so it is easier to find questions and answer those questions.

### 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:

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:

Lecture 3% (9 points)
Labs 10% (30 points)
Checkin’s (2 total) 1% (3 points)
Homework 11% (33 points)
Project 1 11% (33 points)
Project 2 11% (33 points)
Project 3 11% (33 points)
Project 4 11% (33 points)
Midterm 11% (33 points)
Final 20% (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:00.00PM! Even if you submit a second late (aka 11:00.01PM), it will be considered one day late!

## EPA (TBD)

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}

## Lectures

• Lectures are synchronous and recorded and formally start on Berkeley time, so Tuesday and Thursday 11:10 AM and last until 12:29PM. You are encouraged to attend the synchronous lecture as you can use the Zoom chat to answer questions. If however you would rather watch the lecture recorded you can do so. We will also provide the Fall 2020 lectures (which are broken into significantly smaller pieces) for those who prefer that format for lectures.
• The recorded lectures (both for the current semester and Fall 2020) will be posted on Kaltura. We will ensure that any administrative announcements in the synchronous lectures will be in the beginning and posted on piazza.
• We have observed that students who stay current with lectures tend to perform better in the class. Thus after the scheduled end of the synchronous lecture you will have 48 hours to complete a short Gradescope quiz on the lecture content.
• Finally, the lecture zoom room will be started 20 minutes before the start time at 10:50AM. This open time can be used to ask questions of the instructors. This is also formally known as “Pet Time”. Students are encouraged to bring their own dogs, cats, ferrets, snakes, gerbils, or other pets. Any student who wants can then ask to be added to the video panel before the start of lecture so that everyone can enjoy your pets.

## Discussions

The purpose of discussion is to solidify student understanding of the material through guided problem solving. With an online course, some people find it helpful to be in the room with a TA when they go over the problems, so we will have two discussion sections on Zoom spread out throughout the day (with one additional section on Friday and another on Monday), and we will record the sessions for those who normally attend but can’t make it. In addition, we’ll have a pre-recorded “archival-quality” discussion of TAs going over the worksheet available. All four will cover the same material and the same worksheets.

## Labs

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 Piazza 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 of the labs are graded out of 2 points. Please note that these are not 2 points each from the 33 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 33 points course grade portion.

For full credit, labs must submit to the lab autograder by the stated deadlines, which are Friday 11PM PT, for the lab 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 (1 point) at most (Note that Gradescope will still show this as 2 points though Total Course Points will handle the late time). Anytime after that, you will not be able to get any credit, and the lab autograder will no longer be accepting submissions. 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

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

Homeworks will give you unlimited attempts.

## Projects

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

You will work on ALL projects individually All of these projects were designed to be completable on your own. 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. 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.

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

Berkeley honor code: Everyone in this class is expected to adhere to this code: “As a member of the UC Berkeley community, I act with honesty, integrity, and respect for others.”

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 you and your partner ALONE (no discussing or sharing solutions or algorithmic approaches with other students)
• 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! You can read some of the testimonials of students who were caught cheating which Josh Hug collected here: https://sp19.datastructur.es/materials/guides/incident-reports-2017.html.
• 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.

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!

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