CS 61A. The Structure and Interpretation of Computer Programs
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 (Spring 2026):
CS 61A – MoWeFr 13:00-13:59, Dwinelle 155 –
Dan Garcia, Manuel A Sabin
Class Notes
- Lectures will be recorded.
- Time conflicts are allowed.
- There will be an alternate final exam offered immediately after the regular final.
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.
Links: