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

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

Credit Restrictions: Students will receive no credit for Computer Science 61A after completing Computer Science 47A or Computer Science 61AS. A deficient grade in Computer Science 61AS may be removed by taking Computer Science 61A.

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
Fall: 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 (Fall 2022):
MoWeFr 13:00-13:59, Wheeler 150 – John DeNero, Justin Yokota

Class Schedule (Spring 2023):
MoWeFr 14:00-14:59, Wheeler 150 – Hany Farid, John DeNero

Class homepage on inst.eecs

General Catalog listing

Related Areas: