I just finished SICP and thoroughly enjoyed it. The style of being able to read and code along followed by exercises that stretched me, really helped me internalize and assimilate the material. I was curious if there were books out there that followed a similar style. I am not picky about language, well I am picky about language, but I enjoy the opportunity to learn from a variety of sources. Similar questions were asked on HN, but I thought the Lobsters community might bring some insightful responses.
Structure and Interpretation of Classical Mechanics should be right up your alley. Authored with a familiar name and also involves Scheme.
Another truly excellent book in this loose “series” is “Functional Differential Geometry”, which uses Scheme as a notation to express mathematical concepts precisely. The book is free online, and I’m currently having a wonderful time working through it as a first text on differential geometry.
For the unedicated, what’s SICP?
edit Found it. Structure and Interpretation of Computer Programs
After finishing SICP I enjoyed Programming Languages which was about building interpreters in Racket. You’ll want to follow along with the book and the course assignments, for some reason they keep them separate. http://cs.brown.edu/~sk/Publications/Books/ProgLangs http://cs.brown.edu/courses/cs173/2016/assignments.html
I really enjoyed Haskell Programming From First Principles, which is about learning Haskell. Since we’re programmers, we can learn to wield both sides of the Force, Lisp AND Haskell. http://haskellbook.com
Likewise, Let Over Lambda is excellent and I’d argue even more mind bending than SICP and is about DSLs in CL macros, with a final project of making the language Forth a valid DSL in CL: https://letoverlambda.com/index.cl/toc
I’m only part way through, but I really like Software Foundations. It’s about dependently typed proofs in Coq. Really good stuff. Suddenly you realize there’s not just two sides to the Force. https://softwarefoundations.cis.upenn.edu/current/index.html
All of these were very similar to SICP in difficulty, exercise length, and value to my ability to write and comprehend software. I can’t recommend them enough.
Brown further developed the course - CSCI 1730 based on a revised version of PLAI (and an early version of typed racket) with video lectures and assignments.
PLAI’s spiritual successor Programming and Programming Languages is also available based on a new language called Pyret.
Oh cool! I was taking the course when they switched mid-semester to typed racket (which was a big improvement), its nice to see they’ve continued revising further.
While you’re in a Scheming frame of mind, I really like The Little Schemer and The Seasoned Schemer. They have an informal presentation style but before you know it you’ve internalized quite a lot.
In a totally different vein, I’ve been reading Type Theory and Formal Proof and I think this is a remarkable text because it makes the subject so accessible and sprinkles in interesting asides about the development of the theory and implementation of type theory along the way.
Thank you, I was scheming to get into those!
I’ve recently been raving about Software Abstractions, which teaches Alloy specifications. All of the exercises are in the back of the book but it’s well paced and has plenty of examples.
The book The Haskell School of Expression is similar to SICP in that it has exercises and it is very easy to approach. It works toward building a music notation system in Haskell.
I just found what appears to be a rewrite of the book available online http://haskell.cs.yale.edu/wp-content/uploads/2015/03/HSoM.pdf
This book is my worlds converging, it looks quite interesting.
Bird and Wadler’s Introduction to Functional Programming is sometimes talked about as the ML/Haskell tradition’s answer to SICP. It’s very similar in the sense of having exercises that challenge you to extend what you learned in the preceding section as opposed to producing a ever so slight variation on the material already presented.
I can think of a few books with a similar process, the whole “schemer” series that starts with the little schemer, the c programming book, haskell programming from first principles. Thats just of the top of my head.
Scheme and the Art of Programming - https://www.amazon.com/Scheme-Art-Programming-George-Springer/dp/0262192888