But uh, yeah, all of y'all recommending SICP as an intro to programming need to stop. Your target audience, if they take up programming at all, as a hobby, as a profession, or as a way to help them do their real work, is probably not going to use Scheme. They're not going to give a single flying fuck that a small language nucleus can give rise to a whole kundalini of programming concepts and approaches. And when they see the unrelenting mathiness of SICP, they're going to doze off. Plenty of copies of TAOCP sit unread on bookshelves for this same reason also.
I've gone from being a Lisp, Jazz, Aikido guy to a Visual Basic, Punk Rock, MMA guy. At the end of the day, what counts is getting it done with a minimum of fuss, not beauty or orthogonality or any of those other concepts. If you want to teach people programming, teach them to program things they care about in a language they are likely to use.