| CARVIEW |
Select Language
HTTP/2 302
age: 0
date: Tue, 30 Dec 2025 16:13:38 GMT
location: https://www.composingprograms.com
server: Squarespace
set-cookie: crumb=BaHsY+MGwEEEMmFiMzBlMWVhYzk4ZjY5YzIxNDRkNGQyNzNiYjVj;Secure;Path=/
x-contextid: Gm1X3GaD/irUaLUEj
content-length: 0
HTTP/1.1 200 OK
x-cloud-trace-context: 2e42b8b2675ebb46ca96f5a574f8048a;o=1
content-encoding: gzip
server: Google Frontend
Content-Length: 2027
date: Tue, 30 Dec 2025 16:13:38 GMT
expires: Tue, 30 Dec 2025 16:23:38 GMT
Cache-Control: public, max-age=600
ETag: "ekERKw"
Content-Type: text/html
Age: 0
Composing Programs
1.1 Getting Started
1.2 Elements of Programming
1.3 Defining New Functions
1.4 Designing Functions
1.5 Control
1.6 Higher-Order Functions
1.7 Recursive Functions
2.1 Introduction
2.2 Data Abstraction
2.3 Sequences
2.4 Mutable Data
2.5 Object-Oriented Programming
2.6 Implementing Classes and Objects
2.7 Object Abstraction
2.8 Efficiency
2.9 Recursive Objects
3.1 Introduction
3.2 Functional Programming
3.3 Exceptions
3.4 Interpreters for Languages with Combination
3.5 Interpreters for Languages with Abstraction
4.1 Introduction
4.2 Implicit Sequences
4.3 Declarative Programming
4.4 Logic Programming
4.5 Unification
4.6 Distributed Computing
4.7 Distributed Data Processing
4.8 Parallel Computing
Welcome to Composing Programs, a free online introduction to programming and computer science.
In the tradition of SICP, this text focuses on methods for abstraction, programming paradigms, and techniques for managing the complexity of large programs. These concepts are illustrated primarily using the Python 3 programming language.
In addition to reading the chapters below, you can apply your knowledge to the programming projects that accompany the text and visualize program execution using the Online Python Tutor.
Instructors: If you are interested in adapting any of these materials for your courses, please fill out this short survey so that we can support your efforts.