In 2011, to celebrate the 150th anniversary of MIT, the Boston
Globe made a list of the most important innovations developed
there. They asked me to explain the importance of SICP, and this
is what I sent them: SICP was revolutionary in many different
ways. Most importantly, it dramatically raised the bar for the
intellectual content of introductory computer science. Before
SICP, the first CS course was almost always entirely filled with
learning the details of some programming language. SICP is about
standing back from the details to learn big-picture ways to
think about the programming process. It focused attention on the
central idea of abstraction -- finding general patterns from
specific problems and building software tools that embody each
pattern. It made heavy use of the idea of functions as data, an
idea that's hard to learn initially, but immensely powerful once
learned. (This is the same idea, in a different form, that makes
freshman calculus so notoriously hard even for students who've
done well i