How to
Design Programs (introductory programming book intended as a
modernized and somewhat more accessible, e.g. assumes less
math/science/engineering background, alternative to 'Structure
and Interpretation ...'. Like that book, uses Scheme and takes a
functional/compositional approach.)