Syllabus

Overview

Data C88C, Computational Structures in Data Science (also known as CS 88), is an introduction to programming and computing that covers approximately 2/3 of the content of CS 61A. The homework, lab, and discussion questions in Data C88C also appear in CS 61A. Comared to CS 61A, Data C88C is 3 units (rather than 4), has 2 lectures per week (rather than 3), has 2 hours of section per week (rather than 3), and has fewer total topics and assignments.

In Data C88C, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for managing program complexity, such as functional programming and object-oriented programming.

The course content primarily uses the Python programming language, but our goal is not to dictate what language you use in your future endeavors. Instead, our hope is that once you have learned the concepts involved in programming, you will find that picking up a new programming language is but a few days’ work. The course also introduces students to declarative programming in SQL.

Artificial Intelligence and Programming

Programming languages were invented to allow humans to describe programs to computers. Advances in artificial intelligence (AI) now allow humans to describe programs to computers in natural languages such as English. The programs themselves are still written in programming languages and rely on the same concepts and structures that they did prior to these AI advances. However, use of AI tools to generate and manipulate programs is now pervasive.

Currently, the most capable users of AI for programming are those who have a strong foundational understanding of programs and programming languages. Effective use of AI, whether for programming or other domains, is enabled by understanding precisely what outcome one desires and then being able to describe it. Therefore, the content of the course focuses on understanding programming well enough to read, write, and manipulate programs, even without AI assistance.

Students interested in learning to use AI to develop software should instead take CS 61A, which includes an AI-assisted programming project at the end.

Prerequisites

Math 1A is listed as a corequisite for Data C88C. That is, it may be taken concurrently. Math 10A or Math 16A are also fine. It is possible to take Data C88C without knowing or learning calculus. Knowledge of calculus concepts will never be required to complete any assignments. However, taking calculus is a great way to practice the arithmetic and algebra that appear regularly in Data C88C.

There is no formal programming-related prerequisite for CS 61A because students without prior experience can succeed in the course, but taking the course without any prior programming experience is typically quite challenging. Students who take the course without prior programming experience typically must spend more time to complete assignments and tend to receive lower final grades in the course. A typical background includes at least one course equivalent to CS 10 or a score of 3 or above on an AP Computer Science exam. Data C88C moves at a more moderate pace than CS 61A, but you should still expect to spend substantial time on the assignments.

If you find it challenging to complete all of the required coursework in the first three weeks, we strongly recommend that you take another course first. You’ll likely have a better experience taking Data C88C later. Taking Data C88C one semester later is unlikely to affect your degree progress or otherwise put you behind, but continuing to struggle despite this recommendation can lead to difficult academic circumstances that can affect your future opportunities. It’s better to finish Data C88C with strong mastery of the course material, even if that means delaying by a semester, than to rush through it.

Here are some related UC Berkeley courses and how they compare to Data C88C.

CS 61A

CS 61A: Structure and Interpretation of Computer Programs is the first course in UC Berkeley’s introduction to computer science, the CS 61 series. It covers everything in Data C88C and about 50% more content, in 4 units rather than 3.

For the Data Science major and minor, the additional content in CS 61A is highly recommended. For the Computer Science major and minor, the additional content in CS 61A is essential. If you are interested in the CS major or minor, CS 61A is the right introductory course. Even if you’re not, the additonal content in CS 61A is beneficial to all students interested in programming.

Students who complete Data C88C can either proceed directly to CS 61B or subsequently take CS 61A, a path that offers a substantial amount of review because of the high topic overlap between the courses. (Review can be very helpful for some students!) However, you cannot take Data C88C for credit after having taken CS 61A.

Students who take Data C88C and want to learn the topics from CS 61A that were omitted can do so by taking CS 47A in a future semester (or just studying on their own), but planning to take CS 47A is never a good plan, since it is typically offered as a self-paced course with no support.

CS 10

CS 10: The Beauty and Joy of Computing is an introductory computer science course which moves at a more moderate pace than CS 61A or Data C88C. CS 10 covers variables, functions, recursion, algorithmic complexity, object-oriented programming, and many other relevant topics. CS 10 starts the semester in Snap!, a block-based programming language which allows students to focus on conceptual understanding without worrying about unfamiliar syntax. After the midterm, the course transitions into Python (the primary language Data C88C uses). CS 10 also covers big ideas and social implications that go beyond programming, showing you the beauty and joy of computing.

Data 8

Data 8: The Foundations of Data Science is an introduction to data science designed to be accessible and useful for all Berkeley students. This course was built for students without prior programming experience. It teaches students to program in Python, but covers a much smaller subset of the language than Data C88C. Most of the course focuses on data processing and statistical techniques that are central to using computers to answer questions about the world. Data 8 is a great course to take before Data C88C.

Course Format

The course includes many events and opportunities for learning: lecture, lab, discussion, office hours, and more. We recommend that you attend all of them.

Lectures & Videos

There are two 50-minute live lectures per week. In addition, there is a video playlist for each lecture. Please watch the video playlist before attending live lecture or section. The videos cover all required content for the course. Live lecture will not cover all course material and will focus on examples (so watch the videos).

Lab

This semester, we are offering two lab section formats: an attendance-required option called regular section (for most students) and an asynchronous mega section. Both are designed to help students learn the course material. You can choose which format you want, and you may change formats using sections.c88c.org until the add/drop deadline.

Regular section meets for 110-minutes each week. You will be placed in a small group (typically 5 students) that will work together on a discussion-based worksheet for the first hour. For the second hour, you will write code on your own laptop to complete a lab assignment. To receive credit for section, students must attend and submit the lab assignment with all questions answered correctly.

Mega section does not meet on a weekly basis. There will be videos released each week that cover the material. Students in the mega section must complete and submit the weekly lab assignments but are not expected to come to lab, and will recieve full participation credit. Mega section is only recommended for students with considerable prior programming experience, who are confident they can succeed in the course with this self-paced format. Students in the mega section are also required to complete short in-person quizzes as part of most labs, and will signup for a time slot that is at the end of one of the in-person lab times.

Office Hours

Office hours are drop-in tutoring sessions in which you can ask questions about the material, receive guidance on assignments, and work with peers and course staff in a small group setting. See the office hour schedule and come by.

Assignments

In addition to programming-based lab assignments, there are programming-based homework assignments and projects. While completing your programming assignments, an extension called Provenance tracks how you created your submission by logging activity in the assignment folder. Students submit this log with their assignments.

Homework

Weekly homework assignments let you apply the concepts learned in lecture and section to more challenging problems. Homeworks will typically be released on Wednesdays and be due the following Tuesday. Homeworks will be completed alongside an AI tutor called Preceptor that asks students questions to ensure they understand the code that they have written. Students who do not pass the questions from the AI tutor or who would prefer to talk to a human may instead elect to answer questions from a member of course staff in lab or office hours.

Projects

Projects are larger assignments intended to combine ideas from the course in interesting ways.

You are allowed and encouraged to pair program with a partner. Make sure to alternate roles so that both of you understand the complete results. You may also work alone on all projects, although partners are recommended.

Quizzes

Most weeks, lab will include a 10 minute quiz that students take in-person during their lab time (for students enrolled in regular lab section) or at the end of one of the in-person lab times (for students enrolled in the asynchronous mega lab section). The quiz will have one problem that is a slight variant of one of the problems from the homework. Students will complete the quiz on their computer, without assistance from AI or from other students. Students who understood the homework will be well-prepared to succeed on the quiz.

There will be 8 total quizzes. Each student’s top 5 quiz scores will be counted and the remaining quiz scores will be dropped.

Exams

There will be 3 exams:

  • Midterm 1 will be administered in the Computer-Based Testing Facility during the week of 10/19. Students are responsible for reading and following all CBTF policies and procedures, including instantiating a PrairieTest account. Students will sign up for a one-hour time slot one week prior to the exam.
  • Midterm 2 will be a paper exam, held 8pm-10pm on Thursday 11/12.
  • The final exam will be held 11:30am-2:30pm Wednesday 12/16.

Paper exams will be taken in-person in various rooms across campus.

We will post an announcement on Ed ahead of each exam with information for students who cannot take the exam. Students with a conflicting final exam may take the Data C88C final exam in the next final exam slot: 3pm-6pm Wednesday 12/16.

Exam Study Guides:

  • Midterm 1 (to be posted)
  • Midterm 2 (to be posted)
  • Final (to be posted)

Excused Exams & Incompletes

Student who are unable to take a midterm exam for an approved reason may be excused from the exam. If you are unable to take a midterm, please email cs88@berkeley.edu before the exam to describe your situation. Reasons that may be approved include: illness, medical complications, travel, and course conflicts.

If a student is excused from a midterm exam, their exam score will be estimated via regression at the end of the course from their final exam score in a way that does not help or hurt their final grade on average. This method, which assigns them the average score on the missed exam among people who received the same or very similar scores on the final, takes into account variability in exam difficulty.

Typically, students will not be excused from the final exam. However, students who cannot take the final exam for an approved reason and who have completed the assignments for the course may request an incomplete by emailing cs88@berkeley.edu. Students who receive an incomplete grade can complete the course by taking the final exam of a future offering of Data C88C.

Accommodations (DSP and Otherwise)

We will provide appropriate accommodations to all students enrolled in Berkeley’s Disabled Students Program (DSP). To ensure that you receive the appropriate accommodations, have your DSP specialist submit a letter confirming your status and accommodations.

If you’re in the process of being onboarded by DSP, you may be eligible for accommodations. You may also be eligible for accommodations if serious extenuating circumstances should come up during the semester. If you believe you may require accommodations, please email cs88@berkeley.edu.

Important: If you have an accommodation that involves exams, please ensure that a letter is submitted to Berkeley’s system as soon as possible so that we can plan for your accommodation. We cannot always meet accommodation requests on short notice.

Assignment Extensions

If you need to request an extension, regardless of your DSP status, fill out this form. Submissions to this form will be visible only to the course instructors, and certain Student Support staff members.

Any extension request up to 24 hours will be approved. Any extension request up to 3 days made by a student with a DSP accommodation for assignment extensions will be approved. Any longer extensions require a strong justification and will be considered on a case-by-case basis. There is no penalty for requesting an extension.

Joining Data C88C Late

Work submitted late will not receive credit, even if it is from a student who joined the course late. However, it is possible to submit assignments if you are not enrolled. Therefore, if you would like to take the course but are having enrollment issues, please submit all assignments by their due date.

To request to be added to course platforms so that you can submit, email cs88@berkeley.edu.

Privacy

All DSP and accommodations-related materials for this course are kept in a repository separate from the rest of the course materials that is visible only to the instructors and selected staff.

For any DSP and accommodations-related communications, please reach out to cs88@berkeley.edu, which will put you in touch with our student support team. This inbox is only visible to staff members marked with “c88c@” on the staff page. This inbox will be visible to future members of course staff, so if you ever have a communication that you wish to remain private, let us know and we can delete the email exchange once the conversation is resolved.

Resources

Technology

You will need a computer to write code in this class. Professor Lisa Yan wrote a helpful guide about purchasing a laptop for use as a student at UC Berkeley. As mentioned in that guide, the Student Technology Equity Program provides free laptop loans for students.

Textbook

The online textbook for the course is Composing Programs, which was created for this course and CS 61A, based on the classic textbook Structure and Interpretation of Computer Programs. Readings for each lecture appear in the course schedule. We recommend that you complete the readings before attending lecture.

Past exams appear on the Resources page.

Grading

Your course grade is computed using a point system with a total of 200 points, broken down as follows:

  • Midterm 1, worth 20 points (computer-based)
  • Midterm 2, worth 40 points (paper-based)
  • The final exam, worth 60 points (paper-based)
  • Quizzes, worth 10 points (computer-based; only the best 5 quiz scores, out of 8 total quizzes, are counted)
  • Homework, worth 10 points
  • Two projects, worth 50 points
  • Lab, worth 10 points

Lab 0 is not graded. Attending a lab and fully completing the lab assignment earns one lab point, up to a maximum of 10. Students in the mega lab must complete lab assignments (but need not attend for credit).

There are 2 extra credit points available to everyone for early submission of projects.

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

             A  ≥ 185    A-  ≥ 175
B+  ≥ 165    B  ≥ 145    B-  ≥ 130
C+  ≥ 115    C  ≥ 110    C-  ≥ 105
D+  ≥ 100    D  ≥ 95     D-  ≥ 90

Your final score will be rounded to the nearest integer before being converted to a letter grade. 0.5 rounds up to 1, but 0.49 rounds down to 0.

To receive an A+, students must receive at least 205 A+ points. Each regular point is worth 1 A+ point. You can earn additional A+ points from optional contests (to be announced later) and A+ questions on exams. A+ exam questions are not worth any regular points and only serve to qualify students for an A+; they are each worth 5 A+ points each, and there are typically 4 per semester.

There is no curve; your grade will depend only on how well you do, and not on how well everyone else does. Score thresholds are based on how students performed in previous semesters. Thresholds are not usually adjusted based on student performance and never increased.

Incomplete grades will be granted only for medical or personal emergencies that cause you to miss the final or last part of the course, only for students who have completed the majority of the coursework, and only if work up to the point of the emergency has been satisfactory. If you wish to discuss an incomplete in the course, please contact cs88@berkeley.edu.

Most students are expected to end the course with perfect quiz, homework, project, and lab scores. These parts of the course are not meant to be evaluations, but instead learning tools.

Exam Recovery

It is possible to recover lost points on midterms by showing improvement on the final. Your score for each midterm (as a percentage of the total points) will be at least 90% of your score on the final exam. For example, a student who scored 5/20 on Midterm 1, but scored 37.5/75 (50%) on the final exam would receive an adjusted Midterm 1 score of 50% * 90% = 9/20 points, and so would recover 4 Midterm 1 points in addition to the 5 Midterm 1 points already scored.

Exam recovery only applies to students who take the final exam during finals week. Students who receive an incomplete are not eligible for exam recovery.

Late Policy

If you cannot turn in an assignment on time, you can request an extension. For late work beyond the extended deadline:

  • Labs receive no credit.
  • Homework receives no credit.
  • Projects: Submissions within 48 hours after the deadline will receive 75% of the earned score. Submissions that are 48 hours or more after the deadline will receive no credit.

Citizenship

It is our expectation that all interactions with course staff and other students will demonstrate appropriate respect, consideration, and compassion for others. Please remember to be friendly and thoughtful; our community draws from a wide spectrum of valuable experiences. For further reading, please reference the Berkeley Principles of Community and Berkeley Campus Code of Student Conduct.

For exceptionally rude or disrespectful behavior toward the course staff or other students, your final grade will be lowered by up to a full letter grade (e.g., from an A- to a B-) at the discretion of the course instructors. You don’t need to be concerned about this policy if you treat other human beings with even a bare minimum of respect and consideration and do not engage in behavior that is actively harmful to others.

Learning Cooperatively

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

Learning cooperatively is different from sharing answers. You shouldn’t be showing your code to other students or looking at others’ code, except:

  • During lab, you can share all you want as long as you’re all learning.
  • For a project that allows partners, you can share anything with your partner.
  • If you’ve finished a problem already, you can look at others’ code to help them finish.

If you are helping another student, don’t just tell them the answer; they will learn very little and run into trouble on exams. Instead, try to guide them toward discovering the solution on their own by thinking through examples. Problem solving practice is critical to progress in computer science.

Since you’re working collaboratively, keep your project partner 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 Misconduct

Any students caught collaborating on exams will receive an F in the course. Please don’t be one of these students.

Reading others’ homework or project solution to a problem before you solve that problem on your own will incur point penalties. You are free to discuss the problems with others beforehand, but you must write your own solutions. The exception to this rule is that you may share code with your project partner.

The following is a list of things you should NOT do. This list is not exhaustive, but covers most of the big offenses:

  • Do not copy code from any student who is not your partner.
  • Do not allow any student other than your partner to copy code from you.
  • Do not use AI tools such as Github Copilot or ChatGPT to fill in or correct your code.
  • Do not copy solutions from online sources such as Stack Overflow, Pastebin, and public repositories on GitHub.
  • Do not read others’ solutions to an assignment before you have completed the assignment
  • Do not post your solutions publicly during or after the semester.

If you find a solution online, please submit a link to that solution anonymously. When we find an online solution, we ask the author to remove it. We also record the solution and use it to check for copying. By reporting online solutions, you help keep the course fair for everyone.

In summary, we expect you to hand in your own work, take your own tests, and complete projects with code written only by you and your partner.

Rather than copying someone else’s work, ask for help. You are not alone in this course! The entire staff is here to help you succeed. If you invest the time to learn the material and complete the projects, you won’t need to copy any answers.

A Parting Thought

Grades and penalties aren’t the purpose of this course. We really just want you to learn. The entire staff is very excited to be teaching Data C88C this semester and we’re looking forward to meeting such a large and enthusiastic group of students. We want all of you to be successful here. Welcome to Data C88C!


Back to Top

Accessibility Nondiscrimination

Copyright ©2026, Regents of the University of California and respective authors.

This site is built following the Berkeley Class Site template, which is generously based on the Just the Class, and Just the Docs templates.

View all course offerings