← Back to Learning
book

Structure and Interpretation of Computer Programs

by Harold Abelson and Gerald Jay Sussman

★★★★★
Visit Resource ↗

This book changed how I think about programming. It introduces the concept of data abstraction and metalinguistic abstraction in a way that is both profound and accessible (if you don't mind parentheses).

Key Takeaways

  1. Abstraction is key: Building complex systems is all about managing complexity through abstraction layers.
  2. Programs are data: Lisp's homoiconicity is a powerful concept.
(define (factorial n)
  (if (= n 0)
      1
      (* n (factorial (- n 1)))))

A must read for anyone serious about CS.