Welcome to CS 61BL

The CS 61 series is an introduction to computer science, with particular emphasis on software and machines from a programmer’s point of view. In CS 61A, students are exposed to a diverse set of mental models for computational problems and solutions through programming paradigms like functional programming, object-oriented programming, and declarative programming. In CS 61BL, we refine those mental representations by focusing particularly on the efficiency of writing programs (design) and running programs (runtime).

Hours and Workload

This is a summer course, which means it is run at twice the speed of a course during the normal semester. In addition, CS 61B naturally has more involved programming than CS 61A, and CS 61BL has even more, so expect there to be a lot of work. We strongly recommend not taking any other courses alongside CS 61BL.

While we can’t predict how many hours you will spend on the course, here is a brief breakdown of what you will have to do in this course.

  • 12 hours per week in lab.
  • One two-hour lecture per week.
  • One to two quizzes per week in lab (total of 12).
  • Three exams in the 8 weeks of the course.
  • Four projects in the 8 weeks of the course.

Prerequisites

CS 61A is an important prerequisite. We expect to build heavily on data-oriented and object-oriented design approaches introduced in this course and on algorithms for recursive list and tree manipulation. Engineering 7 or CS 88 / Data 8 students may find the beginning of the course to be a bit scarier, particularly when it comes to object-oriented programming and recursion. We assume you are coming in with zero Java experience, but we will move through basic Java syntax very quickly.

We recommend all students to complete the optional introductory assignment by the beginning of the semester to get comfortable with Java and practice some of the programming skills expected by this class.

Alternatives

This is a course about data structures and programming methods. For those who may have already had a data structures course and simply want to learn Java, self-study may be a better option. The self-paced center offers CS 9G: Java for Programmers, which will teach you more of what you want to know in less time. Students with “sufficient partial credit” in CS 61B should consider taking CS 47B to complete the CS 61B requirement without taking the full course. Both of these self-paced courses are only offered during the fall and spring semesters.

Goals and Class Norms

It is our intent that students from all diverse backgrounds and perspectives be well-served by this course, that students’ learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength, and benefit. It is our intent to present materials and activities that are respectful of diversity: gender, sexual orientation, disability, age, socioeconomic status, ethnicity, race, culture, perspective, and other background characteristics. Your suggestions about how to improve the value of diversity in this course are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups.

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.

Mental Health & Wellness

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, depression, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce a student’s ability to participate in daily activities. UC offers services to assist you with addressing these and other concerns you may be experiencing. If you or someone you know are suffering from any of the aforementioned conditions, consider utilizing the confidential mental health services available on campus. We encourage you to reach out to the Counseling Center for support. An on campus counselor or after-hours clinician is available 24/7.

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

Accommodation

UC Berkeley is committed to creating a learning environment that meets the needs of its diverse student body including students with disabilities. If you anticipate or experience any barriers to learning in this course, please feel welcome to discuss your concerns with the instructors.

If you have a disability, or think you may have a disability, you can work with the Disabled Students’ Program (DSP) to request an official accommodation. The Disabled Students’ Program (DSP) is the campus office responsible for authorizing disability-related academic accommodations, in cooperation with the students themselves and their instructors. You can find more information about DSP, including contact information and the application process here. If you have already been approved for accommodations through DSP, please schedule a meeting with the instructors so we can develop an implementation plan together.

Land Statement

We recognize that Berkeley sits on the territory of Huichin, the ancestral and unceded land of the Chochenyo Ohlone, the successors of the historic and sovereign Verona Band of Alameda County. This land was and continues to be of great importance to the Ohlone people. We recognize that every member of the Berkeley community has, and continues to benefit from the use and occupation of this land, since the institution’s founding in 1868. Consistent with our values of community and diversity, we have a responsibility to acknowledge and make visible the university’s relationship to Native peoples. By offering this Land Acknowledgment, we affirm Indigenous sovereignty and will work to hold University of California Berkeley more accountable to the needs of American Indian and Indigenous peoples.

Course Format

Labs

Lab sections meet every day Tuesday through Friday. You may only attend the lab section in which you are enrolled. All lab work must be done with a partner, after Monday 6/28 when partners are finalized. These labs will be held over zoom where you will be working primarily in breakout rooms with your partner (TAs / Tutors / Academic Interns will join the breakout room when you need assistance).

If you would like to swap to a lab section that you are not officially enrolled in, you must receive permission from your current lab TA and the lab TA of the section you would like to attend. Attending a lab that you are not officially enrolled in or have not received permission to attend will result in a loss of attendance EPA.

Lectures

There is one 110-minute lecture every Monday. These lectures will be held synchronously through Zoom and attendance is strongly recommended. If for whatever reason you are unable to attend the lecture video will be posted promptly.

Instructor Office Hours

Instructor office hours are primarily for short questions and administrative problems, but we’re happy to make appointments by email for longer periods of time. The instructors are teachers too: we like teaching, and we’d rather see you as soon as you don’t understand something rather than right before the exam.

In a lab-based course like CS 61BL, we expect that most of the course-related questions will occur during lab or our online forum, Ed. For administrative inquiries like enrollment and DSP accommodations, email the course’s administrative email address, cs61bl@berkeley.edu.

Recurring tutoring

At the beginning of the session, students will be able to sign up for biweekly tutoring sections that will happen Tuesdays and Thursdays in one-hour blocks. During section, a tutor will use a worksheet to reinforce important topics and also answer any other conceptual questions students may have. Tutoring sections will have a set “family” of just a few students, with the hope being that students can learn the material in a close-knit and comfortable environment.

Assignments

Lab Exercises

Each lab assignment is worth 2.5 points and due 22 hours after the start of your enrolled lab section (or of your switched section if have received approval from both the TA and the instructors). For example, if your lab section is from 8-11 AM, then Tuesday’s lab assignment will be due on Wednesday at 6 AM. Similarly, Friday’s lab assignment will be due on Saturday at 6 AM. Lab exercises and self-assessments will be graded via online submission to Gradescope, and you may submit every half an hour as many times as you like before the deadline.

On Gradescope, it might seem like you’re still able to receive credit on the lab assignment if you turn it in a few hours after your deadline. However, note that all deadlines will be retroactively enforced according to the section that we have on record at the end of the semester when grades are calculated.

Quizzes

Wednesdays and Fridays will have Gradescope quizzes covering the content on the last two labs. These will contain questions ranging from multiple choice questions to code writing questions. Not all weeks will contain two quizzes (see the calendar for when the quizzes are planned). Quizzes will be released at noon on Wednesday and Fridays and will be due the following day at 6 PM (Thursday and Saturday respectively). The quizzes will be timed and length will depend on the content of the quiz.

Regardless of length, all quizzes will be worth 2 points. The maximum number of quiz points you can get will be 18, which means that across all of 12 quizzes you need to total 18 points out of the 24 points available to get a full quiz score.

Those who perform poorly have the option to attend Tutor led small group sections on the topics from the quiz. Those who attend these short sections will unlock the ability to take a different version of a quiz on the same topic, which can clobber your initial score. This will be a full clobber so your score would be max(original_quiz_score, redemption_quiz_score).

The quiz review sections will occur on Friday and Mondays and you will have to sign up for these sections through our office hours queue app (more instructions on this will be provided through Ed after the first quiz). Redemption quizzes will be released after the last quiz review section and due the following day at noon. E.g. for a quiz that was released at noon on a Wednesday and due at 6PM on a Thursday the review sections will be Friday and the redemption quiz will be released by noon on Monday and due by Tuesday at 6PM.

EPA

EPA (effort, participation, and altruism) points will allocated holistically based on lab attendance, lecture interaction, and peer to peer interaction through discord and Ed. These points will be applied at the end of the semester in an unspecified fashion, but will be applied as extra credit. Your grade will only improve with EPA.

Projects

There are four projects in this course. Projects are larger and more challenging assignments than you would typically find in a lab. All projects are to be done with your partner. There will be some in lab time to work on these projects, but they are largely meant to be completed outside of lab.

Exams

Midterm exams will be open from 6:10 PM until 8:00 PM pacific time. The final exam will have a three hour window and open from 11:10 AM until 2:00 PM pacific time. There will be an alternate for students with qualifying circumstances from 9:10 pm until 12:00 AM pacific time. Exams will be administered using an online assessment software and will be proctored.

This course has two midterm exams and a third, final exam.

  • Midterm 1 will be July 8.
  • Midterm 2 will be July 26.
  • The Final Exam will be Thursday, August 12.

If you miss one midterm exam, your score will be reweighted with your performance on the final exam according to the exam supersession policy outlined below. Students with DSP accommodations that require alternate exam timing will be accounted for, so long as you can make a time that overlaps the official time. If you have a disability that prevents your ability to make such a time, we will discuss alternate arrangements with you directly.

If you have a time conflict with two or more midterm exams, or if you are unable to make the final exam, we suggest you seek accommodations with the conflicting party, or take CS 61B next semester. If, for whatever reason, you still need to take this course this semester, email cs61bl@berkeley.edu by the first week of the course explaining your needs. We are willing to accommodate, but expect that most students who miss exams will need to take an incomplete grade and complete the exams the next semester as there will be no additional alternate exams.

Exam Supersession

For those of you who miss an exam, have a bad night, or make major improvements over the semester, the exam supersession policy gives you a chance to replace one of your midterm exams. Specifically, if it helps your score, we will replace one of your midterm scores by its “final statistical equivalent” (FSE). We compute the FSE of an exam as follows:

Let \(F\) be the number of standard deviations above the mean that you score on the final. For example, if you are 0.3 standard deviations below the mean, \(F=-0.3\). Let \(\overline{M}\) be the class-wide mean (not including zeros) on a midterm, \(M\). Let \(\sigma_M\) be the class-wide standard deviations (not including zeros) on the same midterm \(M\). Your FSE for that exam is \(\sigma_MF + \overline{M}\).

If the FSE of midterm \(M\) is better than your original midterm \(M\) score, we will replace the original score with the FSE instead. If the FSE of all two midterm exams is better than each original score, then we will replace the one exam that gives you the greatest overall benefit. If all of the FSE are worse, nothing happens, so doing badly on the final won’t hurt your earlier exam scores.

Surveys (Newly Added)

After most weeks, we will send out a weekly survey in the weekly announcements. We will have 6 weekly surveys. Completing each weekly survey will give half of an extra credit point! In addition to the weekly surveys, we will send out presemester, midsemester, and end of the semester surveys. Completing each of the presemester, midsemester, or end of the semester surveys will earn 1 extra credit point. Completing all three will give 3 points. So, if you complete every survey in this class, you can get a total of 6 extra credit points! This is the only extra credit offered, so we highly recommend taking advantage of it.

Grading

Your course grade is computed using a point system with a total of 300 points.

Grade breakdown
Category Percentage Points
Labs 18% 54
Quizzes 6% 18
Project 0 4% 12
Project 1 8% 24
Project 2 14% 42
Project 3 12% 36
Midterm 1 8% 24
Midterm 2 12% 36
Final Exam 18% 54
Total 100% 300

Each letter grade for the course corresponds to a range of scores:

Grade bins
A+ A A- B+ B B- C+ C C- D+ D D- F
295 280 265 245 225 205 195 185 175 170 165 160 0

There is no curve. Your grade will depend only on how well you do, and not on how well everyone else does. These bins were designed based on past semester student performance with the intention of complying with departmental grading guidelines.

Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final, and only if your work up to that point has been satisfactory. You must complete all coursework before the drop deadline to be considered for an incomplete grade. For more information, please email the instructors.

There are a total of 24 graded lab exercises, each worth 2.5 points. Thus, while the total point value for labs is 60 points, lab grades are capped at 54 points. This means that you can miss up to 6 points on labs without penalty. In other words, getting more than 54 points on lab is equivalent to getting 54 points for your lab score. This is the same idea that will be applied to the 12 quizzes, which are each worth 2 points.

Late Policy

Labs

For lab assignments, you will receive a total of 4 slip days, with one slip day released to you every two weeks. If you use a slip day, your lab deadline is extended by 24 hours. You can use at most one slip day per lab assignment, and you may use a fraction of a slip day. Lab assignments turned in late without using a slip day will receive no credit.

You should only be using a slip day on a lab assignment if you have made significant progress on the lab prior to the original deadline for the assignment. The intention of a slip day is to give you enough time to put the last finishing touches on the lab assignment before turning it in (for example, if you have been facing a bug for awhile, you should use a slip day, which buys you time to get some sleep before asking your TA for the last bit of help you need the next day). We recommend that slip days are not be used if significant progress wasn’t made on the lab before the deadline, such as if you couldn’t make a lab section and are trying to complete the entire lab the day after. In this situation, it may be better for you to consider skipping the assignment and proceeding with the more current ones to keep pace with the course. Remember, you don’t need to get all points in the lab category to still get full credit for labs.

Note that slip days are handled individually, not on a partner basis, meaning that your slip days don’t add up. If partner A requests a slip day and turns in a lab late, partner B should also request one (otherwise partner B would receive no credit).

To use a lab slip day, go to the Extensions tab on Beacon. If you have enough slip days remaining, you may select your assignment and your new due date. Slip days can technically be applied retroactively. Note that once you apply a slip day to an assignment, you cannot later extend it by even more time.

Note: Previously (Before 6/24), you had to email your TA to use a slip day. We have since edited Beacon and the syllabus. Please do NOT email your TA to request a slip day, you can just do it yourself.

Projects

For projects, you will not receive any slip days. However, you may turn in your project late and receive a penalty depending on when it is submitted:

  • Within 24 hours of the deadline: 10% penalty
  • Within 48 hours of the deadline: 50% penalty
  • More than 48 hours after the deadline: 100% penalty (no credit)

For example, a project that scored 10 points on the autograder that was turned in 8 hours after the deadline will receive a 10% penalty; the final score will be 9 points. Similarly, the same project turned in 25 hours after the deadline will receive a 50% deduction, and the final score will be 5 points.

Resources

Online Forum

Our discussion forum this semester will be Ed. For most questions about the course, Ed is the right place to ask them. The course staff read it regularly, so you will get a quick answer. Furthermore, by posting online as opposed to emailing us directly, other students benefit by seeing the question and the answer.

Staff Email

The email address cs61bl@berkeley.edu will send a message to the instructors. Only the current instructors have access to this email. You can use it for correspondence that you don’t want to send to Ed. Please do not email the instructors directly since your message may be misplaced that way. You will get a faster response from the course email.

Reading

You are expected to read each lab’s contents. There are also related textbooks that belong to CS 61B, which you may read if you please. The first text we use is Josh Hug’s free, online course notes. If you find these notes insufficient, you might consider consulting Paul Hilfinger’s (free) Java Reference or Head First Java, 2nd Edition by Sierra and Bates (O’Reilly, 2005). The optional textbook for the latter half of the course is Algorithms, 4th Edition by Wayne and Sedgewick.

Collaboration and Cheating

Plagiarism on any lab or project will result in a score of zero on that assignment. A second instance of plagiarism on a lab or project will result in an F in the course. All incidents of plagiarism will be referred to the Office of Student Conduct, including carelessly leaving code up on GitHub. Further details about our academic dishonesty policy can be found here.

Deadlines can be stressful, and we know that under extreme pressure, it becomes tempting to start rationalizing actions that you would otherwise would consider inappropriate. If you find yourself in this situation, please talk to a staff member immediately! See the late policy above. We want to work with you!

During the Spring 2017 semester, we compiled a series of incident reports written by students who were caught plagiarizing. If you find yourself tempted to cheat, consider turning to the words of others who have made the wrong choice for guidance.

Lab Collaboration

The entire point of labs is to learn, so we emphasize active learning and pair programming. For labs, just like projects, you will submit with a partner. One person can make a submission on Gradescope (from the partner repositories that are distributed on 6/28), and then add the other person to their submission. For the first week of labs, before partners are finalized, you are able to submit individually. Feel free to collaborate with others besides your partner however you choose, though keep in mind that greater independence between pairs is likely to give you a better learning experience, as long as you aren’t totally stuck. Even though we will allow close collaboration outside of just your partner pairs on labs, the code you and your partner turn in should still be by you and your partner alone! This means that although you may discuss the labs with other students than your partner, you should not be sharing or receiving code from them.

Project Collaboration

By contrast, the projects were designed not just for learning (particularly how to be self-reliant in the context of large unfamiliar systems), but also for the dual purpose of evaluating your mastery of the course material. As such, they are intended to be completed primarily independently of any other pair, particularly when it comes to writing actual code. You should never be in direct possession of another pair’s code. However, we encourage you to discuss high-level strategies, specific syntax issues, and solutions to bugs.

Exam Cheating

For exams, we will be absolutely unforgiving. Any incident will result in a failing grade for the course, though Berkeley will let you retake CS 61B next semester. All incidents of exam cheating will be referred to the Office of Student Conduct.

Academic Honesty

The golden rule of academic dishonesty is that you should not claim to be responsible for work that is not yours. To help (but not entirely define) the bounds of acceptable behavior, we have three important rules for projects:

  • By You (and Your Partner) Alone: All code that you submit (other than skeleton code) should be written by you and your partner alone, except for small snippets that solve tiny subproblems (examples in the Permitted section below).
  • 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 (or your partner) did not write. You will be equally culpable if you distribute such code to other students or future students of CS 61BL (within reason). DO NOT GIVE ANYONE YOUR CODE! EVEN IF THEY ARE DESPERATELY ASKING. DO NOT POST SOLUTIONS TO PROJECTS ONLINE (on GitHub or anywhere else)! If you’re not sure what you’re doing is OK, please ask.
  • Cite Your Sources: When you receive significant assistance on a project from someone else, you should cite that assistance somewhere in your source code with the @source tag. We leave it to you to decide what constitutes “significant”.

Permitted

  • Discussion of approaches for solving a problem. Such help should be cited as comments in your code. For the sake of others’ learning experience, we ask that you try not to give away anything juicy, and instead try to lead people to such solutions.
  • Discussion of specific syntax issues and bugs in your code, without showing another student your code. Verbally discussing syntax issues is permitted, but Zoom screen sharing your code, for example, is never permitted. Cite any non course staff (course staff meaning AI, Tutor, TA, and Instructor) person you received advice from.
  • Using small snippets of code that you find online for solving tiny problems such as code for finding the distance between two points. Such usages must be cited in comments in your code.

Absolutely Forbidden

  • Typing or dictating code into someone else’s computer is a violation of the “By You Alone” rule.
  • Looking at someone else’s project code to understand a particular idea or part of a project. This is strongly discouraged due to the danger of plagiarism. We are very serious about the “By You Alone” rule!
  • Possessing project solution code that you did not write yourself or another student’s project code in any form before a final deadline, be it electronic or on paper. This includes the situation where you’re trying to help someone debug. Distributing such code is equally forbidden.
  • Posting solution code to any assignment in a public place (e.g. a public git repository, mediafire, etched into stones above the Mediterranean, etc). This applies even after the semester is over.
  • 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.

You can obey the letter of this entire policy while completely violating its spirit. However, this policy is not a game to be defeated, and such circumventions will be seen as plagiarism.

A Parting Thought

Grades and penalties aren’t the purpose of this course; we really just want you to learn and be successful in the course.

The entire staff is very excited to be teaching CS 61BL this semester and we’re looking forward to meeting such a large and enthusiastic group of students. Welcome to CS 61BL!

Acknowledgments

Some course information ideas derived from Paul Hilfinger’s CS 61B handout, Josh Hug’s CS 61B syllabus, Brian Harvey’s CS 61A handout, David Malan’s CS50, and Zephyr Omaly’s guide to inclusive classrooms.