The Structure and Interpretation of Computer Programs
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.
Fall 2026
Topics
- Getting Started
- Elements Of Programming
- Defining New Functions
- Designing Functions
- Control
- Higher Order Functions
- Recursive Functions
- Data
- Sequences
- Compound Data
- Mutable Data
- Object Oriented Programming
- Lazy Evaluation
- Efficiency
- Interpreting Computer Programs
- Functional Programming
- Gleam Functions And Control
- Gleam Lists And Data
- Parse
- Eval
Readings
Prerequisites & course information
{'preRequisiteCourse': '1144961', 'concurrentPrerequisit': False}; {'preRequisiteCourse': '1144962', 'concurrentPrerequisit': False}