Catalog Description: An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. Techniques include procedural abstraction; control abstraction using recursion, higher-order functions, generators, and streams; data abstraction using interfaces, objects, classes, and generic operators; and language abstraction using interpreters and macros. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects.

Units: 4

Also Offered As: COMPSCI 61A

Related Areas:

Prerequisites: MATH 1A (may be taken concurrently) or Math 10A or Math 16A. Programming experience equivalent to that gained from a score of 3 or above on the Advanced Placement Computer Science exam.

Credit Restrictions: Students will receive no credit for COMPSCI 61A after completing COMPSCI 47A, COMPSCI 61AS, or COMPSCI W61A.

Formats:
Fall: 3.0 hours of lecture, 1.5 hours of discussion, and 1.5 hours of laboratory per week
Summer: 6.0 hours of lecture, 3.0 hours of discussion, and 3.0 hours of laboratory per week
Spring: 3.0 hours of lecture, 1.5 hours of discussion, and 1.5 hours of laboratory per week

Grading Basis: Student Option

Final Exam Status: Yes


Class Schedule (Summer 2026):
CS 61A – MoTuWeTh 17:00-18:29, Li Ka Shing 245 – Rebecca Dang

Class Notes
- All exams (5 quizzes, 1 midterm, and 1 final) are in-person only

- Quizzes will be weekly on Mondays/Tuesdays at a time of your choosing (through the CBTF, see https://rtl.berkeley.edu/services-programs/computer-based-testing-facility-cbtf), except Weeks 1, 4, and 8.

- The midterm will be on Monday Jul 13, 2026 from 7-9 pm (week 4). There will be an alternate midterm on Tuesday Jul 14, 2026 from 8-10 am.

- The final will be on Tuesday Aug 11, 2026 from 7-10 pm (week 8). There will be an alternate final on Wednesday Aug 12, 2026 from 8-11 am.

- Lab and discussion attendance is mandatory.

- Lecture time conflicts are allowed and attendance is not mandatory.

Class Schedule (Fall 2026):
CS 61A – MoWeFr 12:00-12:59, Wheeler 150 – John DeNero, Kay Ousterhout

Class Notes
- Time conflicts are allowed

- We will offer an alternate final exam

- Lectures will be recorded

- Data C88C is a 3-unit version of this course that covers less material at a slower pace. Students who are not CS/EECS/ECE majors and do not anticipate taking upper-division computer science courses (which require the 4-unit CS 61A as a prerequisite) may want to consider Data C88C instead of CS 61A.

- While CS 61A does not require any prior programming experience, students with little or no programming experience often find CS 61A to be very challenging. CS 10 is an introductory course designed for students new to programming that many students take before CS 61A.

- Seats reserved for students with enrollment permission are not open. They are reserved for students in internal programs. Please DO NOT ask faculty or staff for one of these seats.

Links: