[HN Gopher] How to recommend books, or, stop recommending SICP
       ___________________________________________________________________
        
       How to recommend books, or, stop recommending SICP
        
       Author : eatonphil
       Score  : 13 points
       Date   : 2022-01-31 17:38 UTC (5 hours ago)
        
 (HTM) web link (notes.eatonphil.com)
 (TXT) w3m dump (notes.eatonphil.com)
        
       | lispm wrote:
       | I think SICP is extremely well written and worth a read. I know
       | its contents are slightly controversial (Maths! Functional
       | Programming! Scheme! Lots of Silly Parentheses!) and now a bit
       | oldish - the course on which this book is based was created
       | around 1980. There are roughly a dozen books which try to be an
       | improved version of SICP. Still, it's a classic and it has
       | inspired a lot of people.
       | 
       | The original group for which the book was written are computer
       | science students. As such it is only partly about learning
       | 'Scheme' (actually only a small subset) or 'Programming'.
       | 
       | Originally one wanted to teach how to do software engineering
       | from the ground up: build an evaluator, a compiler, a register
       | machine, ... This style now is a bit out of fashion and the
       | education switched to a different approach: assemble available
       | Python modules. Still I like the SICP approach to give students a
       | deep understanding how to build up from basics.
       | 
       | In the Lisp world, there are books like Winston/Horn 'Lisp'
       | (which adapts some content from SICP) or 'PAIP' from Peter
       | Norvig, which are also challenging. 'Lisp' is more interested in
       | teaching actual programming in a larger language and 'PAIP'
       | teaches programming by exposing students to larger programs and
       | larger code examples. Still both give the students, like SICP, a
       | lot of inspiration to experiment with the provided topics and
       | examples.
       | 
       | There are other books/courses based on Logo, Scheme, Oz, etc.
       | which address some of the complaints about SICP.
       | 
       | SICP now is also available in a JavaScript edition.
       | 
       | https://en.wikipedia.org/wiki/Structure_and_Interpretation_o...
        
       | 0x7E3 wrote:
       | I'm glad it was recommended to me.
       | 
       | > If you love challenging books, you are neither the norm nor the
       | audience of this post.
       | 
       | If you read books on programming and computer science in general
       | you are not the norm, and perhaps shouldn't be the audience of
       | this post either?
       | 
       | > the prose itself is so dense and archaic
       | 
       | I'm not sure what in particular you feel is archaic, but density
       | is a selling point here. One of the things that makes SICP
       | attractive is the high information density. There are already too
       | many books that are full of fluff that appears to exist only to
       | hit a page count.
       | 
       | > it requires such a level of competence in math and physics
       | 
       | Can you give some specific examples of the math and physics that
       | you think are beyond the capabilities of a bright high school
       | graduate (that seems like a reasonable minimum bar to expect for
       | someone picking up a book targeted at freshmen at MIT)?
        
         | emptysongglass wrote:
         | It's been a few years since I tried to breach it but I'm your
         | normative (arts education) audience for this and SICP's
         | frontloading of higher-level math was a showstopper for me. I
         | won't point you to examples but will say that How to Design
         | Programs succeeded where SICP failed. Gregor Kiczales' How to
         | Code, a MOOC based on HtDP is a masterwork of teaching that
         | starts with the student drawing basic shapes and filling them
         | in with color.
         | 
         | I think people who were raised on the more technical fare often
         | have a blindspot for how unapproachable programming can be to
         | liberal arts people like me. The assumed knowledge can be
         | greatly discouraging. We so often need a new vector that speaks
         | to how we learned to conceive of the world.
        
         | bkolobara wrote:
         | > Can you give some specific examples of the math and physics
         | that you think are beyond the capabilities of a bright high
         | school graduate (that seems like a reasonable minimum bar to
         | expect for someone picking up a book targeted at freshmen at
         | MIT)?
         | 
         | Just look at some of the examples right at the start of the
         | book, in the first chapter:
         | 
         | > This section describes two methods for checking the primality
         | of an integer n, one with order of growth Theta(sqrt(n)), and a
         | 'probabilistic' algorithm with order of growth Theta(log n).
         | 
         | > ...
         | 
         | > Fermat's Little Theorem: If n is a prime number and a is any
         | positive integer less than n, then a raised to the nth power is
         | congruent to a modulo n.
         | 
         | > ...
         | 
         | > When we first introduced the square-root procedure, in
         | section 1.1.7, we mentioned that this was a special case of
         | Newton's method. If x -> g(x) is a differentiable function,
         | then a solution of the equation g(x) = 0 is a fixed point of
         | the function x -> f(x) where [complex formula] and Dg(x) is the
         | derivative of g evaluated at x.
         | 
         | As someone who has a masters degree in CS, I agree with OP.
         | People mostly recommend SICP to beginners because they want to
         | sound smart, not because it's a good intro to programming.
        
           | 0x7E3 wrote:
           | > This section describes two methods for checking the
           | primality of an integer n, one with order of growth
           | Theta(sqrt(n)), and a 'probabilistic' algorithm with order of
           | growth Theta(log n).
           | 
           | The book explains order of growth a few pages before this
           | example, so the only assumed knowledge here is what a prime
           | number is, which seems very reasonable.
           | 
           | > Fermat's Little Theorem: If n is a prime number and a is
           | any positive integer less than n, then a raised to the nth
           | power is congruent to a modulo n.
           | 
           | That's the concise definition of Fermat's Little theorem,
           | that he then proceeds to explain in detail. Again, not
           | presupposed knowledge, but something new to learn. He
           | explains congruent modulo, so you are expected to know what
           | prime numbers are, and what positive integers are. Again, CS
           | books from MIT are not for you if you don't know those two
           | things.
           | 
           | > When we first introduced the square-root procedure, in
           | section 1.1.7, we mentioned that this was a special case of
           | Newton's method. If x -> g(x) is a differentiable function,
           | then a solution of the equation g(x) = 0 is a fixed point of
           | the function x -> f(x) where [complex formula] and Dg(x) is
           | the derivative of g evaluated at x.
           | 
           | This one assumes that you understand the material from
           | section 1.1.7. I think you've succeeded in making a case for
           | reading the book and completing the exercises in order, but
           | not that it places unreasonable expectations on its reader.
        
         | solarmist wrote:
         | > Can you give some specific examples of the math and physics
         | that you think are beyond the capabilities of a bright high
         | school graduate (that seems like a reasonable minimum bar to
         | expect for someone picking up a book targeted at freshmen at
         | MIT)?
         | 
         | I'm going to stop you there. If you think that jumping into
         | approximating square roots via newton's method is not a "high
         | level of competence in math and physics" then you have lived in
         | a completely different world than I did. And the issue isn't
         | knowledge (that's shared in plenty of detail in the book), but
         | the maturity of mathematical reasoning.
         | 
         | The level of calculus taught to me in high school (and college)
         | was at the same level as Algebra and Trigonometry. It was
         | taught as a tool for engineers to use, not as a framework for
         | building your own tools (proof-based calculus). The only people
         | around me that reached that level of mathematical maturity were
         | Maths, Physics, and Computer Science majors. And often it
         | wouldn't "sink in" until around junior year for them.
         | 
         | > The \sqrt(x) = the y such that y >= 0 and y^2 = x.
         | 
         | This is an extremely dense mathematical sentence that requires
         | a high level of mathematic maturity to understand that the
         | author isn't just throwing that out randomly. It wasn't until I
         | took a formal proofs/introduction to analysis course that it
         | sunk in that a mathematical definition isn't just a sentence
         | describing a new piece of vocabulary but is instead a highly
         | technical engineering spec for a mathematical tool.
         | 
         | And until I made that transition I couldn't follow the flow of
         | the logic, implications of the ideas/problems presented, or see
         | the bigger picture of how these things fit together. They were
         | technically accessible to me (I could read and understand the
         | words and problems), but they completely lacked coherence to
         | me.
        
       | snicker7 wrote:
       | Book recommendation lists are about inflating one's ego. I would
       | look uncultured if I recommended the books I actually enjoy and
       | derive value from (or, more poignantly, actually read).
       | 
       | I /highly/ recommend SICP as a first introduction to programming.
        
         | eatonphil wrote:
         | Now I really want to know what you're reading.
        
       | gabrielsroka wrote:
       | The way I think about this is you have to have the appropriate
       | prerequisites, whether it's a technical book or not.
       | 
       | Here's a loose analogy: you shouldn't take college calculus if
       | you don't already know arithmetic and algebra. And maybe you
       | shouldn't read SICP if you haven't taken its prerequisites
       | either.
        
       | bitwize wrote:
       | I freakin' love SICP. It has the same "energy", as they say, that
       | Scheme itself does. It's succinct, and yet it covers nearly all
       | of the big concepts of programming, starting from a nucleus of a
       | few key ideas (including, especially, lambda). It also explodes
       | some of the myths underlying programming -- and by myths I mean
       | "stories we tell to describe the shape of the universe", not
       | "utterly false things a lot of people think is true". One of
       | those myths is OO. You can see how OO works through SICP, and you
       | can build your own OO system in Scheme, so there is nothing
       | irreducibly fundamental about OO; it doesn't even need a language
       | that explicitly supports it!
       | 
       | 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.
        
         | Turing_Machine wrote:
         | > 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.
         | 
         | Some of us are working on that, and that's all I'm gonna say
         | right now. And yeah, maybe that's not going to work out. Anyone
         | see a white whale around here?
         | 
         | > Plenty of copies of TAOCP sit unread on bookshelves for this
         | same reason also.
         | 
         | I'd say that TAOCP is more of a reference work than a course
         | textbook. It's a completely different kind of book to SICP.
        
       | solarmist wrote:
       | I'm sorry but this post is ridiculous.
       | 
       | By following the advice in it no one would ever recommend a book
       | that requires knowledge/reasoning skills beyond a high school
       | level.
       | 
       | This goes for literature too.
       | 
       | I also call bullshit on his definition of "Goals". There are
       | plenty of books whose content is valuable enough that the work
       | put into extracting the information is more than worth the
       | effort.
       | 
       | The correct message is to understand who your audience is before
       | you make any recommendations.
        
       ___________________________________________________________________
       (page generated 2022-01-31 23:02 UTC)