Live data from Hacker News

If not SICP, then what? Maybe HTDP?

stevenrosenberg.net

61–70 of 227 posts

Re: If not SICP, then what? Maybe HTDP?

#61
post #39

Both SICP and HTDP are very good books. SICP has little more 'attitude' in it, but I think its neutral feature. If you want to learn programming as something between algorithms and programming languages, I suggest these four 'Lisp' books: 1. SICP (Structure and Interpretation of Computer Programs) 2. HTDP (How to Design Programs) https://htdp.org 3. LiSP (Lisp in Small Pieces), 4. PAIP (Paradigms of Artificial Intell…

Which among these teach me functional paradigm through LISP the best? Or would you recommend some other book that uses a small language to gain a good grip over FP? Haskell, Scala and Clojure are intimidatingly big.

HtDP or none of them.

Functional paradigm has two flavors:

1. Functions as first class objects in the language and enabling the functional style programming.

2. Pure functional programming. Not a style, its functional programming.

IMHO learning the first kind helps relatively little when you want to learn second kind and vice versa.

Lisp is multi-paradigm language or "Lisp paradigm" language family. Because functions are first class objects it facilitate functional programming of the first kind. Some Lisps are geared towards using functional style more than others.

Re: If not SICP, then what? Maybe HTDP?

#62
post #4

People who worked through HtDP: what are your impressions?

I am working through HtDP now. I was initially watching Gregor Kiczales' accompanying playlists[0] on YouTube concurrent with the material. They were good and short enough that I charged through and finished them before reaching the corresponding material in the book.

I think the biggest win is that it's the first source I've found that incrementally teaches a pragmatic understanding of recursion[1]. But also why it works, with the structure of the code following the structure of the data definitions and downward. The videos classify natural, mutual, structural, and generative recursions and explain the who/why/what/etc of each. Gregor's video explanations were great, and the book similarly seems to anticipate many questions I have while working through the problems. At times, parts have been slow, probably due to some prior knowledge[2], but definitely worth the trek.

The first time I learned recursion was basically a "now draw the rest of the owl" trope. I was hoping for so much more in way of explanation and have always felt incapable whenever struggling to approach and solve recursive problems. And questions always just led to non-didactic Inception movie references.

I used to think maybe I was just bad at that type of problem. And maybe I am, but more and more, it feels like people generally - including those teaching - don't actually know the concepts here themselves. It's like the world has just collectively memorized a few examples and refuses to acknowledge the giant spaces between them.

In that sense HtDP has been incredibly refreshing.

[0] https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w They are the videos that go with the edx course mentioned elsewhere here.

[1] Although I've heard The [Little|Reasoned|etc.] [Schemer|Lisper] books may do similarly.

[2] I'm in my last semester of a CS degree and I have work experience programming

Re: If not SICP, then what? Maybe HTDP?

#63

Earlier quoted context omitted.

too easy, last night I went to Gilbert De Magnete (original in latin no less) http://www.gutenberg.org/ebooks/33810?msg=welcome_stranger

You joke (and cool find), but Maxwell's writings one the subject of electromagnetism are indeed a lot easier to grasp than some modern textbooks

I don't doubt it

Re: If not SICP, then what? Maybe HTDP?

#64

Earlier quoted context omitted.

Honestly, there's just a tiny bit too much of real number knowledge required in SICP. I wasn't good enough to really derive newtonian method on my own. For someone looking to develop applications I believe it's completely off the map. HtDP requires no arithmetic from what I recall. Which makes it more focused. Now SICP was for EE doing software. I suggest to everyone to learn EE, even partially, it's surprisingly use…

> I wasn't good enough to really derive newtonian method on my own. There is an old SMBC comic highlighting this general issue in STEM where for some mysterious reason, mathematical theories that took at least a few scientific generations to figure out, with lots of bitter fighting among the giants of science about which conclusion we should accept as correct, are now being taught as if they are trivial to reproduce…

So that’s where Google- and all of the tech companies aping Google- got their interviewing style from.

Re: If not SICP, then what? Maybe HTDP?

#65

Earlier quoted context omitted.

You’re free to use Racket with any editor. DrRacket is just one IDE that you can use that is geared towards learners.

Isn't HTDP very DrRacket oriented though?

My first, first year CS course [1] was based on HTDP and used DrRacket extensively. I, on the other hand, did all my assignments in Emacs. Worked completely fine for me.

[1] https://www.student.cs.uwaterloo.ca/~cs135/

Re: If not SICP, then what? Maybe HTDP?

#66
post #39

Both SICP and HTDP are very good books. SICP has little more 'attitude' in it, but I think its neutral feature. If you want to learn programming as something between algorithms and programming languages, I suggest these four 'Lisp' books: 1. SICP (Structure and Interpretation of Computer Programs) 2. HTDP (How to Design Programs) https://htdp.org 3. LiSP (Lisp in Small Pieces), 4. PAIP (Paradigms of Artificial Intell…

Which among these teach me functional paradigm through LISP the best? Or would you recommend some other book that uses a small language to gain a good grip over FP? Haskell, Scala and Clojure are intimidatingly big.

For Clojure - a good start might be something like solving a few of the advent of code puzzles with the simple but powerful map/reduce functions. You won’t need the whole language and you will be writing functional programs.

The experience of that alone might help you find the next book that works for you.

Re: If not SICP, then what? Maybe HTDP?

#67
post #36

Hm. Not entirely sure what to think. I find SICP to be a mind-blowing book - a truly enlightening experience. But not, perhaps, entirely suited for beginners. I first started reading it four years ago, just over two years after I had started to teach myself programming in high school. Although I already found it interesting and its functional programming approach did have a lasting impact on my programming style, I r…

I agree, I started reading SICP a few years ago when I was already a professional dev. I enjoyed it quite a lot, it's a very elegant book.

That being said if I try to put myself back in 16 yo old me learning to code to write games for my calculator, I would've been incredibly frustrated by this book. The insights on the nature of programing constructs would've flown completely over my head and at the same time it wouldn't have given me the practical information I needed to get things done.

Re: If not SICP, then what? Maybe HTDP?

#68
post #52

They may even come to the conclusion that programming is a shallow activity and that what truly matters is an understanding of domain knowledge THE HORROR ;) In all seriousness, IMO we'd have much better programs if developers spent more time thinking about domain knowledge and less time believing that "programming" in isolation is the important part.

Domain knowledge vs. programming "in isolation" is a false dichotomy. Indeed, the programmer's business is to think about the domain in terms of computer science in the programming language of choice. It is sometimes a very complicated translation process, and the complexities do not necessarily come from the domain per se but often from requirements concerning the target platform, efficiency, precision, user interface, etc. At the end of the day, that is what turns out to be the "important part," and those who fail to realize that early in the process are usually bound to suffer some unpleasant consequences.

Re: If not SICP, then what? Maybe HTDP?

#69
post #46

Earlier quoted context omitted.

Source citing any or all of above properties?

http://www.prepscholar.com/sat/s/colleges/MIT-SAT-scores-GPA (First google result, I didn’t verify further) It is admittedly only a proxy, but the entrance SAT math scores for MIT students are 770 for the 25th percentile and 800 at the 75th percentile. Put another way: the test that is a helpful differentiator of intellectual ability of the general college population is not a good differentiator for the MIT populatio…

Raven's progressive matrices and similar are differentiator of intellectual ability. SAT scores correspond to time spent on chair doing homework.

Re: If not SICP, then what? Maybe HTDP?

#70

> If not SICP, then what? Maybe HTDP? TAoCP should be enough for anybody

Not really the same thing, SICP is about the practice of programming and the effects of abstraction. TAOCP is more like a recipe book of algorithms.

So the answer is, one needs both.
Post reply on HN