I like the cut of your jib, however: I believe APL actually exposes you to an even higher(est) order of abstraction which makes you truly confront the meat of the problem space/algorithm v.s. allowing for a few sessions of syntax abstraction before you get down to business. Believe me I LOVE lisp, but I also recognize that many times I enjoy it because it allows me to create these amazingly succinct domain specific languages before ever "getting to work". When I attempt to write/think something in APL I find myself actually just pondering the problem. It was the language in which I realized math was my true (and neglected) love.
Thank you for explaining the conceptual framework APL provides. My comment was merely poking a little fun at the kind of comments we sometimes see when people are trying to the tell the virtues of Lisp. I could not say much about APL but did want to find out if it really gives you a new way of thinking.
I think if you're looking for a replacement for SICP that covers a broad spectrum of language paradigms, (in particular paradigms beyond just imperative vs. functional) a good choice might be Concepts, Techniques and Models of Computer Programming, which uses the Oz programming language.
Might be a bit ambitious covering Fortran, Lisp, C, Smalltalk, Scala, and more in an intro to programming course. This looks more like a history and comparison of languages.
To an extent, you're right. But SICP already covers most of the concepts of these languages -- it just chooses to cover them all in Scheme, with a functional bias. I don't see why differing syntax should affect the teaching of the concepts, as long as focus is maintained on one language when it comes to actual programming. That said, this course as it is does teach too broadly to be an effective intro to CS.
It is not just a difference in syntax, it is about the core. While all those programming languages are great in their respective areas, Scheme is directly based on the lambda calculus and as such it defines a minimal amount of primitives/constructions, on top of which you can build almost any other concept from scratch. This is great for a person learning the ropes.
I sadly lost the book when I moved but I remember loving both the book and the course and learning a ton thanks to seeing a number of different language types side by side. I have fond memories of trying to wrap my mind around Prolog the first time I saw it.
Perhaps it's not Scala but the paradigms that define it that are "state of the art". Multiple paradigms like functional programming, OOP, and other nice syntactical things make Scala very much a language of the future, even if its current implementation is poor. It's a marker to where we may be headed in language development.
It seems to steer away from PL details and focus more on how to design programs and think about programming.