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). Further, we aim to achieve a basic understanding of fundamental topics in theoretical computer science, as part of our work on improving performance.

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.

  • Four 2 hour practical labs per week on Monday - Thursday.
  • One 2 hour theoretical lab per week on Friday.
  • Four one-hour lectures per week on Monday - Thursday.
  • One quiz per week (total of 6).
  • Two 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.

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

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, and more.) To help accomplish this:

  • If your name and/or pronouns differ from those that appear in your official records, please let us know.
  • In scheduling exams, we have attempted to avoid conflicts with major religious holidays. If, however, we have inadvertently scheduled an exam or major deadline that creates a conflict with your religious observances, please let us know as soon as possible so that we can make other arrangements.
  • If you feel like your performance in the class is being affected by your experiences outside of class (e.g., family matters, current events), please don’t hesitate to come and talk with us. We want to be resources for you.

Professionalism and respect for diversity are not just matters between students; they also apply to how the course staff treat the students. The staff of this course will treat you in a way that respects our differences. However, despite our best efforts, we might slip up, hopefully inadvertently. We (like many people) are still in the process of learning about diverse perspectives and identities. If you are concerned about classroom environment issues created by the overall class dynamic or by the staff, please feel free to talk to us about it.

If something was said in class (by anyone—staff member or fellow student) that made you feel uncomfortable, please talk to us about it. Sometimes, you may not be comfortable bringing this up directly to us. Here are some options:

Remote Policy #

This is, per university policy, an in-person course. However, we will make at least one lab section online, along with some tutor sections and instructor office hours. Please note, however, that our ability to support those in other timezones will be limited by our need to sleep at night. That means that, if you are on the other side of the world, you may have to be up all night to attend our offerings. We thus do not recommend that you take the course if you will not be physically located in an amenable timezone, although we will not prevent you. You must take the exams in person. Everything other than exams can be done remotely. If you can’t attend the midterm in-person, but can attend the final in-person, please email us.

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. Your mental health is more important than this course. Seriously. UC Berkeley offers services to assist you with addressing mental health concerns or stressful events:

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

If you’re experiencing extenuating circumstances impacting your mental health and would like to meet with a member of course staff to work out accommodations within the course, or would like to be connected to more resources, fill out our Extenuating Circumstances form.

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 free to email cs61bl@berkeley.edu.

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 Monday through Friday. You may only attend the lab section in which you are enrolled. In-person labs will be held in a lab room in Soda Hall. Remote labs will be held over Zoom where you will be working primarily in breakout rooms.

The Monday through Thursday labs are practical labs that emphasize hands-on experience with the course material. These involve coding assignments that are submitted for credit. Practical labs do not require attendance. The Friday labs are theoretical labs that involve working through a worksheet with your classmates and TA. Theoretical labs will have a small attendance credit (see grading breakdown below).

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. Please email or talk to your TA if you would like to swap sections. Attending a lab that you are not officially enrolled in or have not received permission to attend may result in you being de-prioritized for help.

Lectures #

There are two 50-minute lectures on Monday and Wednesday. The lecture will be held in Dwinelle 155, and will also be webcast synchronously over Zoom. Attendance is strongly recommended. If for whatever reason you are unable to attend, the lecture video will be posted promptly.

Instructor Lab #

There will be instructor-taught labs on Tuesday and Thursday held in VLSB 2050. These will largely consist of instructors lecturing and covering content relevant to that day’s lab assignment. Instructor Labs will also be webcast synchronously over Zoom, and a recording of the lab will be posted promptly after its conclusion. These labs will cover material required for the course, and will cover new material separate from the lecture times above. It is highly recommended you treat instructor labs like lectures and attend them or watch the recording.

Instructor Office Hours #

Instructor office hours are primarily for conceptual questions and administrative problems. 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. That being said, please direct any debugging questions to lab or normal office hours. If you’d like to meet with us and cannot make any of the weekly times, reach out to us privately via the course email.

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

Assignments #

Lab Exercises #

Each lab assignment is worth 2 points and officially 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 4-6 PM, then Tuesday’s lab assignment will be due on Wednesday at 2 PM. However, you will have a 2 hour grace period to submit the assignment without lateness penalty. This grace period is intended to be used for technical difficulties which may arise when submitting to the official deadline. Lab exercises and self-assessments will be graded via online submission to Gradescope.

Quizzes #

Quizzes will be administered once a week covering the content on the course material for that week. These will contain questions ranging from multiple choice questions to code writing questions. Quizzes will be released on Fridays, and due the following Monday. Quizzes are closed note, closed IDE. The quizzes will be timed and you will have 1 hour to complete them after you start the assignment on Gradescope.

Regardless of length, all quizzes will be worth 2.5 points. The maximum number of quiz points you can get will be 15.

Those who perform poorly have the option to attend Tutor led redemption 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 Tuesdays and Wednesdays. You will have to sign up for these section, more instructions on this will be provided after the first quiz. Redemption quizzes will be released at 12 AM Thursday and due almost 24 hours later on Thursday, midnight.

Projects #

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

Exams #

This course has a midterm exam and a final exam.

  • The Midterm will be on Friday, 12th July from 7-9 PM.
  • The Final Exam will be on Thursday, 8th August from 6-9 PM.

We will offer in-person exams only.

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 the midterm exam, or if you are unable to make the final exam, please email cs61bl@berkeley.edu as soon as possible explaining your needs.

Final Exam Clobbering #

For those of you who have a bad night, fall sick, or make major improvements over the semester, the exam clobbering policy gives you a chance to replace your midterm exam score.

Specifically, if it helps your score, we will offer a full z-score clobber to the midterm from the final.

As an example, suppose you are in the following situation (all numbers are in terms of raw scores):

  • Midterm Exam: Your Score = 60, Mean Score = 70, Standard Deviation = 10
  • Final Exam: Your Score = 85, Mean Score = 75, Standard Deviation = 10

In this case, you will have the following z-scores:

  • Midterm Exam: (60 - 70) / 10 = -1
  • Final Exam: (85 - 75) / 10 = 1

Since the final exam z-score (1) is higher than the midterm z-score (-1), we will replace your midterm score with a score that corresponds to a z-score of 1, meaning that your updated midterm score will be 80 (midterm mean + 1 std = 70 + 10).

Z-scores will be based on the grades before this policy is applied. In other words, we will not recalculate the statistics for the midterm for the purposes of implementing this policy.

The final exam z-score clobbering policy will only be applied if it helps your score. For example, if you score around the average on the midterm, but then have a bad day and do poorly on the final, we will not change your midterm scores.

While this mechanism introduces a bit of curving to the class, in practice it does not turn the class into a competition. Our grading bins are still fixed, a vast majority of the points are not subject to this mechanism, and the impact tends to be relatively small for most students.

In theory, it would be nice to have a mechanism that avoids using any statistics, e.g., simply replacing your midterm score with the final grade if it’s higher. In practice, it is very difficult to get both the exam means (and variances) to line up. Therefore, we use a z-score clobbering policy as described above.

Surveys #

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!

Grading #

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

Grade breakdown
Category Percentage Points
Lab Assignments 13% 40
Theoretical Lab Attendance 5% 15
Quizzes 5% 15
Project 0 5% 15
Project 1 10% 30
Project 2 12% 36
Project 3 12% 36
Midterm 18% 54
Final Exam 20% 59
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. Per university policy, you will not be able to request for an incomplete on assignments that were involved in academic misconduct. For more information, please email the instructors.

There are a total of 21 graded lab exercises, each worth 2 points. Thus, while the total point value for labs is 42 points, lab grades are capped at 40 points. This means that you can miss up to 1 lab without penalty if you get a full score on every other lab. It also means that you can get full credit for labs in this class if you do not get a full score on every lab assignment. In other words, getting more than 40 points on lab is equivalent to getting 40 points for your lab score.

For the theoretical lab sections, you will need to attend 5 out of the total 6 in order to recieve full attendance credit. Each attendance is worth 3 points, with a point cap of 15 points.

Late Policy #

Lab Lateness #

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 not use a fraction of a slip day. Slip days may only be applied retroactively. 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.

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. Note that you can only request at most 1 slip day per lab, and once you apply a slip day to an assignment, you cannot later extend it by even more time.

Project Lateness #

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.

No extensions will be granted for project checkpoints and project 3 with the exception of DSP extension accommodations.

DSP Accommodations #

We will be honoring DSP accommodations for extensions on assignments. For any assignment, students with the extension accommodations can receive an automatic one day extension on any assignment.

To request for a DSP-related extension, go to the “DSP Extensions” section under the Extensions tab on Beacon. We will check your DSP record for extensions related accommodations.

Extenuating Circumstances #

We define extenuating circumstances as circumstances outside of the student’s control that directly inhibits the student’s ability to complete assignments in a timely manner. Some examples include unforeseen physical/mental health crises, technical issues (broken laptop), family emergency, etc.

If you’re experiencing extenuating circumstances impacting your mental health and would like to meet with a member of course staff to work out accommodations within the course, or would like to be connected to more resources, you can set up a meeting with us here.

We will not be considering retroactive submissions to the extenuating circumstances form. This means that you should proactively submit to the form before the assignment’s deadline to be considered. Exceptions will only be made in extreme cases.

The last day to submit any assignment is Wednesday, August 8th, 11:59 PM PT. This is a hard deadline, and we will not accept any submissions made after this deadline.

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.

Ed Etiquette #

  • Search before posting: Your question may have already been answered by us or other students in the past. Reading other students’ posts will let you refine your question, and gives us more time to answer new questions.
  • Try to avoid open-ended or vague questions such as: “How does Java work?” or “How come the solution to a discussion problem is this?”. If you walk us through your thoughts and reference specific lines that you find confusing, we can better address the problem you are facing. Being specific helps us uncover any misunderstandings that you may have.
  • Post questions about assignments as public follow-ups on the corresponding assignment post: For example, post your questions about Lab 1 under the Lab 1 post. If your question is too detailed or revealing to fit as a follow-up, your question would be better answered during office hours.
  • No follow-up +1’s: Instead, you should use the heart button on a question/follow-up. Excessive +1 follow-ups clutter the post and make it more difficult to get to the unresolved follow-ups.
  • If you want a reply on a follow-up, mark it as unresolved, or we may not see it.

For more detailed information, please read over the Ed policies and guidelines.

Staff Email #

The email address cs61bl@berkeley.edu will send a message to the instructors. Only the current instructors and select Head TAs have access to this email. You can use it for correspondence that you don’t want to send to all TAs through the ticketing system. 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 The first text we use is Josh Hug’s free, online course notes written in collaboration with past and current TAs. 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 Academic Misconduct #

Plagiarism on any lab or project will result in a score of zero on that assignment, along with academic sanctions. 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 Center for Student Conduct, including carelessly leaving code up on GitHub. Further details about our academic misconduct 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, you can work with anyone in your lab section, including sharing code. Each student is responsible for submitting to their own gradescope, however. If you decide to work alone, you are able to submit individually.

Project Collaboration #

For both projects, they are designed for learning and evaluating your mastery of the course material. As such, they are intended to be completed primarily independently of any other student, particularly when it comes to writing actual code. However, we do encourage collaborations through discussing high-level strategies, specific syntax issues, and solutions to bugs with other students. You should never be in direct possession code that was not written entirely by you alone.

For Project 2, we will allow, but not require partnerships. Details will be released in the project spec.

Project 3 will be the only project where formal partnerships are required. Details related to partnerships will be released in the project spec.

Exam Misconduct #

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 academic misconduct on exams will be referred to the Center for Student Conduct.

Academic Misconduct #

The golden rule of academic misconduct 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 math operations (finding the distance between two points, etc), or basic Java syntax (how to capitalize a String, how to iterate a list, etc). Such usages must be cited in comments in your code, or would be considered plagiarism.

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 not allowed 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, Google Drive, Discord, 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.
  • Using any LLM tools such as ChatGPT, GitHub Co-Pilot, or similar AI tools to generate code. (Project 3 BYOW Note: LLMs are permitted in the Interactivity component with citations, but they are still forbidden in the World Generation component. Further details will be released in the project spec)

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: