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
Related Areas:
Prerequisites: MATH 51 (may be taken concurrently); or MATH 10A; or MATH 16A; and 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. A deficient grade in COMPSCI 61A may be removed by taking 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: letter
Final Exam Status: Written final exam conducted during the scheduled final exam period
Class Schedule (Summer 2025):
CS 61A – MoTuWeTh 11:00-12:29, Valley Life Sciences 2050; MoTuWeTh 17:00-18:29, –
Class Notes
* Time conflicts ARE allowed.
* This is an IN-PERSON class, on-site attendance is expected.
* Lecture WILL be recorded for playback later.
* To enroll - enroll in the lecture and 999 discussion and 999L lab sections. Assignments to the ACTUAL discussion and lab sections will be done by teaching staff prior to the start of class.
* Midterm: 7/17/25 from 7-9 pm
* Final: 8/12/25 from 11:30 am - 2:30 pm
* IN PERSON only exams
* Email CS61A@berkeley.edu to reach instructors.
Class Schedule (Fall 2025):
CS 61A – MoWeFr 13:00-13:59, Wheeler 150 –
John DeNero
Class Notes
* To enroll in this class, enroll in Lecture 1, Discussion 999, and Lab 999A. Actual lab and discussion assignments will be done outside the system during the first class.
* Time conflicts ARE allowed.
* Lecture will be recorded.
Links: