# 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). 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 Fall 2020, 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

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.

Synchronous and Asynchronous Learning: Research (and anecdotal evidence) have shown that students who keep up with the material every week do better than students who fall behind, start projects late, and have to cram for each exam at the last minute. So, as much as you can, attend our face-to-face lecture (Mon @ 4-5pm PST … but Wed when Monday is a holiday) + a discussion (Mon @ 10am, 1pm, or 6pm PST) synchronously. However, you will not be penalized for being in a time zone that makes that difficult, and you will find recordings of these sessions available. The only required synchronous element is a weekly 15m lab checkoff with you and your partner with video on, but will have many times throughout the day available for that.

Here’s the overall summary of all the elements of the course (and how it used to be done):

Fall 2019 Face-to-Face (F2F) Fall 2020 Online
Lecture MWF for an hour. If you miss it, you can watch the video. No attendance taken. Monday live (and recorded for those who miss it), everyone strongly encouraged to attend, no attendance taken. Content (what used to be MWF lectures) has been pre-recorded with high production value. Clicker questions after every lecture, which earn credit. These are due the day after they would be normally given.
Discussion 1 hour, mostly work on worksheets in groups, some clarification mini-lectures. Three live 1-hour discussions spread out through the day, and 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 Students drop in to 1-hour (conceptual and project) TA or faculty group office hours TAs and faculty still hold the same office hours, just on Zoom. We will have 3 types of office hours: Lab OH for lab checkoffs and 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 Parties These happen close to projects, in a big room We are no longer having project parties and instead having project OH which are spread out closer to the due dates of the projects. They will be held via Zoom.
Exams Quest: 1 hour (1 study sheet)
Midterm: 2 hours (2 study sheets)
Final: 3 hours (3 study sheets)
All exams occur in the evening spread all across campus.
Quest: 1 hour worth of work
Midterm: 2 hours worth of work
Final: 3 hours worth of work
All exams occur over a 24-hour period. Open book, closed internet. Everyone given a randomized exam and 24 total hours to complete it.

## Exams

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

• Quest: 9/13 12:00AM-11:59PM PT. Covers up to and including the 9/4 lecture on C Memory Management.
• Midterm: 10/25 12:00AM-11:59PM PT. Covers up to and including the 10/19 lecture on Pipelining.
• Final: 12/13 12:00AM-11:59PM PT. All topics are in scope and are equally emphasised.

Exams are open book, closed internet, no collaboration of any kind. We’ll utilize a cell phone time-lapse movie of student’s computer and desk. Longer exams broken into parts to allow for breaks. Collaboration on exams will result in an immediate F in the course!

## “Clobber” Policy

The clobber policy allows you to override your Quest score with the score of the corresponding section on the Midterm and your Quest and Midterm scores with the score of the corresponding section on the final exam if you perform better on the respective sections of the final. Note that the reverse is not true - you must take the entire final exam, regardless of your Quest and Midterm scores.

Here is an example of the process:

Suppose we are interested in computing your clobbered midterm score:

Potential replacement score = (Final-mt-subscore - Final-mt-mean)/Final-mt-stddev * Mt-stddev + Mt-mean

Clobbered mt score = MAX(Original mt score, Potential replacement score)

Final-mt-subscore is your score on the midterm section of the final, Final-mt-mean and Final-mt-stddev are the mean and standard deviation of the midterm section of the final, and Mt-stddev and Mt-mean are the standard deviation and mean of the actual midterm.

“Clobbered mt score” is then filled in as your midterm score for the final grade calculation. For the Quest we will take the MAX(Original Quest score, mt replacement score, final replacement score).

Note that clobber will NOT give you more points than the exam is worth (meaning that it is really min(score, max score))

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

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.

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.

## 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/fall2020/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. 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, so please be specific. 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.
• 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.

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

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

Lecture 5% (15 points)
Labs 5% (15 points)
Homework 10% (30 points)
Projects (4 total) 40% (120 points)
Quest 5% (15 points)
Midterm 15% (45 points)
Final 20% (60 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 (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

• The first lecture of the week will be synchronous (but recorded and available soon after for anyone who could not make it). We encourage the entire class to try to attend this lecture, since it will provide the week’s overview and a discussion of computing in the news, allow for face-to-face Q&A time with the instructors, and will often have honored guests dropping in, You don’t want to miss it! We will not be taking attendance.
• Lectures containing course content will be pre-recorded and posted on Kaltura. We will split up lectures into shorter segments.
• Lectures will be distributed as an online assignment; we’re still working out the final details. There will be questions for each video segment that need to be completed correctly to receive credit. You will have unlimited attempts; the questions should be straight forward if you watched the video (we encourage you to complete it while you’re watching the video).
• To keep you on schedule, you’ll have 2 days to complete the questions. If you have an emergency that will prevent you from doing this, please make a private Piazza post.
• Lectures will be due the day after they would have been given. This means Monday lectures clicker questions are due Tuesday, Wednesdays lecture is due Thursday, and Fridays lecture is due Saturday. We will not be offering extensions to these.
• We will post on the website slides and a link to the Lecture playlist so you can easily access it later in the course.
• The other lecture times of the week (usually WF 4-5pm) will be a chance to have instructor group and individual office hours.

## 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 three discussion sections on Zoom spread out throughout the day, 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. You are required 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 required to have a lab partner. If you do not sign up with a partner, you will NOT get credit for the lab. You and your partner BOTH must sign up for the same appointments slot–if you see someone that you do not know signed up for a slot, do not sign up for that slot. If there is only one person on an appointment slot, we will not check you off. BOTH you and your partner need to have a full score on the current lab to get credit.

After completing each lab, you and your partner will need to complete a checkoff which you both need to attend. This process involves showing a staff member that you have completed the assignment, and if time permits, will allow to spend individualized time with a staff member. You will have two attempts to be checked off. You will then both provide your cs61c logins (cs61c-xxx) and the staff member will check you off. This will automatically upload a token to Gradescope with the number of points the staff member is giving you for that assignment. Before leaving the checkoff call, you MUST 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.

For checkoffs, we will do an appointment based system using https://oh.cs61c.org/. Appointments for the week will be released on Sunday around 9 PM PT, when all of the other material for the week is released. You may then sign up for UP TO one checkoff time per lab. You and your partner must both attend the checkoff.

The checkoff slots will be 13 minutes long, with a 2 minute leeway, and will not be on Berkeley-time (they’ll start at the assigned time). If you would like to checkoff multiple labs in your appointment, you may do so, though you will not get extra time in your slot. Please utilize the Live Chat feature in the portal appropriately to communicate with your partner or the staff member during the checkoff, especially to check for if the staff member needs to tell you anything before the Zoom meeting begins. If you finish early, we encourage you to utilize these appointments to ask any questions you may have pertaining to the course, or simply check-in about how things are going for you; they are the most individualized and personal aspects of the course that we hope you use.

For full credit, labs must be checked off by the stated deadlines, which are Friday EOD, with the exception of holidays, for the lab of the week. If you get checked off after the original deadline but before the next lab’s deadline, you will be able to receive half credit (1 point) at most. Anytime after that, you will not be able to be checked off for any credit, but you may still go over the checkoff to further your understanding if you wish. Because of this, we will be giving you one lab drop which will drop your lowest lab score.

For each lab, we will have a lab office hours queue. This help queue is for students who need help completing the lab. You will have two official checkoff attempt per lab.

You may get checked off in Lab OH as well, though we would prefer if the students choosing to do this are ones who were unable to pass the checkoff on their first try, or are checking off a lab late. Be aware that we will de-prioritize you over lab questions, which are what Lab OH are meant for. We have included this option to accommodate students, but there is not infrastructure for it to handle the volume of or replace the appointment system, so use this at your own risk (fair warning, in the past, students have waited hours to get checked off in the queue). You cannot get checked off at regular office hours.

The staff recommends always asking for help in lab office hours 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 a staff member. Each lab will contain questions you should be able to answer and some of them have a Gradescope autograder, even though we will not explicitly ask them to give you points. The purpose of the checkoff is to gauge your understanding and fill in any holes/build on your knowledge of the concepts assessed by the checkoff questions. If you are unsure of the answer to any of these questions you should ask for help before getting checked off.

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

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 projects 1 & 2 individually while projects 3 & 4 may be done by a group of up to 2 people – we strongly encourage you to find a partner for these projects, you can learn a lot from working with someone! Note that all of these projects were designed to be completable on your own. Collaborating with other students on non-partner projects is strictly prohibited. For partner projects, you may only collaborate with your partner. 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 slip-day tokens, which allow you to reduce your late penalties on late project submissions. There are no slip days for any other assignment.

If a given assignment which has slip days allows for partners, each person will use their own number of slip days regardless of what their partner has. This means that if your partner has 1 slip day while you have 0 slip days, if the group turns in the assignment late, your partner would use their slip day while you would take the late penalty for a day. Additionally, you may not break up your partnership once you have selected on with GitHub classroom. This means you cannot dissolve a partnership due to uneven slip day amounts. You should carefully discuss this with the person who you are deciding on being partners with as we will make NO excpetions to this rule.

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.

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

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