sicp.io
Back to the course

Chapter 1 · Building Abstractions with Procedures

18 runnable lessons across 3 sections of the original book.

Start

Section 1.1 · The Elements of Programming

7 lessons

  1. 1.1.1An expression asks for a value.Open lesson
  2. 1.1.2A name gets its value from a particular environment.Open lesson
  3. 1.1.3A procedure gives a process a name.Open lesson
  4. 1.1.4Substitution explains an application by rewriting its body.Open lesson
  5. 1.1.5A predicate chooses which work becomes real.Open lesson
  6. 1.1.6Repeated refinement turns a guess into an approximation.Open lesson
  7. 1.1.7A useful boundary hides a method without hiding its contract.Open lesson

Section 1.2 · Procedures and the Processes They Generate

6 lessons

  1. 1.2.1The answer is only the last frame.Open lesson
  2. 1.2.2A tree process can repeat the same smaller problem.Open lesson
  3. 1.2.3An invariant makes exponent reduction safe.Open lesson
  4. 1.2.4Replace the problem with a smaller equivalent one.Open lesson
  5. 1.2.5A fast passing test is evidence with a boundary.Open lesson
  6. 1.2.6Remainders keep repeated squaring inside a modulus.Open lesson

Section 1.3 · Formulating Abstractions with Higher-Order Procedures

5 lessons

  1. 1.3.1Pass the part that changes.Open lesson
  2. 1.3.2Lambda creates a procedure before any argument arrives.Open lesson
  3. 1.3.3A transformation can produce its own next guess.Open lesson
  4. 1.3.4A finite continued fraction can unfold or accumulate.Open lesson
  5. 1.3.5A procedure can build the next procedure.Open lesson

Chapter checkpoint

Reconnect the chapter’s key ideas before moving on.

Review