Welcome to the 3rd edition of Composing Programs, a free online introduction to programming and computer science.
- Composing Programs
- Chapter 1: Functions
Chapters 2, 3, and 4 will be added this semester!
The first and second edition are still available.
In the tradition of SICP, this text introduces abstraction, programming paradigms, problem solving, and techniques for managing the complexity of large programs. These concepts are illustrated primarily using the Python programming language. Some later sections use SQL and Gleam.
This third edition focuses on how to use artificial intelligentence (AI) tools to write, extend, and understand computer programs. The way to build this ability is first to understand how programming languages represent information, express problem-solving logic, and manage complexity, and only then learn how to use AI tools. Therefore, most of the book is not about AI or its use, but instead about programming foundations.
The text features interactive environment diagrams generated by the Online Python Tutor.
This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
This online book is a derivative of Structure and Interpretation of Computer Programs (2nd ed.) by Harold Abelson, Gerald Jay Sussman, and Julie Sussman. Composing Programs was originally authored in 2011 under the CC BY-NC-SA 3.0 Unported license applied to SICP by MIT Press at that time. (SICP was later relicensed under CC BY-SA 4.0 in 2016). As permitted under Section 4(b) of the original 3.0 license, this adaptation has been upgraded to CC BY-NC-SA 4.0, but remains non-commercial.
Copyright John DeNero.