Course Description

CS 88 is a connector for Data 8 that is designed for students who would like a more complete introduction to Computer Science. We will cover a variety of topics such as functional programming, data abstraction, object-oriented programming, and program complexity. This course will be taught primarily in Python. However, we are interested in teaching you foundational programming ideas, not just how to use one particular programming language. Once you have learned the essence of programming and the concepts that appear in various forms in programming languages, you will be able to pick up other languages and other programming concepts rapidly.

The material for this course has significant overlap with CS 61A. We do not cover the interpretation section of CS61A. If you are certain that you want to major or minor in Computer Science, CS 61A is the right introductory course. You can take CS 61A for credit after having taken CS 88. However, you cannot take CS 88 for credit after having taken CS 61A. Data 8 and CS 88 together satisfy the knowledge prerequisite for CS 61B.


It is recommended that you are currently enrolled in or have taken Data 8. There is no formal programming-related prerequisite for CS 88. You do not need to be familiar with any particular programming language.

Course Format

Lecture: There will be two 50-minute lectures per week. In Fall 2020, one of these lectures will be pre-recorded, the class calendar will contain links to videos for each lecture. Live lectures are recorded and available after the fact.

Lecture Quizzes: Every lecture will have a short series of questions, which can be answered online after the lecture. These questions will help check your understanding. Every lecture quiz is worth 1 point, and you have week to complete the quiz. Late submissions are accepted until the end of the semester for half credit. These are graded on accuracy, but you have infinite attempts.

Labs/Discussion: This course also includes one weekly two-hour section. The first hour will be going over a discussion worksheet and writing code by hand. The second hour will be coding on computers. Sections will be run by a TA. Labs are short, relatively simple exercises designed to introduce a new topic. Participation in lab is essential and required. Labs will be graded on correctness, but you can still get full credit even if you do not get every single question right.

Homework: There will be weekly homework assignments that will be more involved and are meant to illustrate and explore new topics. You are encouraged to discuss the homework with other students, but your final solution should be developed alone. Homework will be graded on accuracy.

Projects: There will be 2 projects intended to teach you how to combine ideas from the course in interesting ways. Projects will be graded on accuracy.

Exams: This course will have one midterm and a final. The Midterm will held in the evening and is two hours long to give you more time than lecture would allow. You will be allowed to bring a fixed number of pages of notes to each exam. Details of this policy will be released as the exams approach.

Office Hours: Attending office hours is another great way to succeed in this course. Office hours are held by TAs and the instructor each week. An office hours schedule appears on the course website. In office hours, you can ask questions about the material, receive guidance on assignments, work with peers and course staff in a small group setting, find project partners, and learn about computer science at Berkeley.

Optional Sections: In addition to the weekly class meetings, the course will include optional events such as review sessions/guerrilla sections that are designed to help you master the course material and complete the assignments. Details of these events will be announced as they approach.


The online textbook for the course is Composing Programs, which was created specifically for CS61A but is also the best basis for this course. Readings for each lecture appear in the course schedule. We will be jumping around a little due to the data-centric orientation of the course. You should complete the readings before attending lecture.

In addition, the course website and Piazza will contain additional links to guides, handouts, and practice materials available for the course.


Your course grade is computed using a point system with the following distribution:

  • Midterm: 14%, 56 points
  • Final: 23%, 92 points
  • Projects: 25%, 100 points
  • Lecture Quizzes: 5%, 20 points (20 x 1 point)
  • Weekly Homework: 22%, 88 points (11 x 8 points)
  • Weekly Labs: 11%, 44 points (11 x 4 points)
  • EPA (Effort, Participation, Altruism)

The EPA points will be determined at the end of the semester and will only serve to boost your grade. EPA is based on attendance, being a good citizen, and doing your best. It is only very small portion of your grade and rewards those who consistently put in effort into CS 88.

This means the total points scale is out of 400 points. To earn the grade state below, you need to earn that many points. No comparisons to your peers, no curves, no guessing or complex formulas.

A+  ≥ 399    A  ≥ 380    A-  ≥ 360
B+  ≥ 330    B  ≥ 300    B-  ≥ 270
C+  ≥ 240    C  ≥ 215    C-  ≥ 190
D+  ≥ 170    D  ≥ 150    D-  ≥ 130

Learning Cooperatively

With the obvious exception of exams and take-home quizzes, we encourage you to discuss all of the course activities with your friends and classmates as you are working on them. You will definitely learn more in this class if you work with others than if you do not. Ask questions, answer questions, and share ideas liberally.

Since you're working collaboratively, keep your project partner and TA informed. If some medical or personal emergency takes you away from the course for an extended period, or if you decide to drop the course for any reason, please don't just disappear silently! You should inform your project partner, so that nobody is depending on you to do something you can't finish.

Academic Honesty

Cooperation has a limit, however, and in CS 88 that limit is sharing code. Feel free to discuss the problems with others beforehand, but not the code that solves them. Homework and projects can be completed in pairs. You can share everything with your partner. Do not share your code with anyone but your partner, and do not read anyone but your partner's code. Do not post your solutions online. Do not use pastebin or github, which post your work publicly by default. Do not read solutions that you find online. Write your own programs and keep them to yourself.

If you find a solution online, please email a link to that solution to the instructor.

We expect you to hand in your own work, take your own tests, and complete your own projects. The assignments and evaluations are structured to help you learn, which is why you're here. The course staff works hard to put together this course, and we ask in return that you respect the integrity of the course by not misrepresenting your work.

The EECS Department Policy on Academic Dishonesty says, "Copying all or part of another person's work, or using reference materials not specifically allowed, are forms of cheating and will not be tolerated." The policy statement goes on to explain the penalties for cheating, which range from a zero grade for the test up to dismissal from the University, for a second offense.

The creation of computer code is the most rewarding and the same time most frustrating activity: As exhilarating as it is when a program works, as frustrating can it be when it doesn't. This frustration, however, is a very important part of the learning experience: You are sharpening your own analytical skills by having the computer constantly test your hypotheses. Sharing code and short cutting the mental discovery process that goes along with creating code strips you off the most important part of this class. If you find you are running out of ideas, take a break and do something else, then go back to it. If you end up not finding a solution after major time spent, try to formulate in your head what your most constructive question would be and seek help from a peer, a TA, or the professor. The TAs, academic interns, and instructor are all here to help you succeed. If you cannot solve a problem in time for the deadline, try to come as close as you can, even if you might not end up getting points for it. You are attending Berkeley for the experience, not for the grades. Don't strip yourself off that experience by copying somebody else's code.

Late Policy

Everyone has 8 slip days which are applied to late submissions of labs, homework, and projects. You may only use a max of 3 per assignment however. Slip days will automatically be applied to maximize your grade.

Assignmented turned in after 3 days late will not receive credit for late submission, but we will drop the lowest homework and lab. If you have exceptional circumstances, please contact the course staff via the discussion platform (Ed).

Projects will offer extra credit for early submission and penalties for late submission in order to encourage students to start early, while recognizing that unfortunate events can intercede.

A Parting Thought

The main goal of this course is to help you the learn and enjoy the material. Please don't hesitate to reach out to the staff for any questions or concerns. We are here to help you however we can. Welcome to CS 88!