Live data from Hacker News

If not SICP, then what? Maybe HTDP?

stevenrosenberg.net

21–30 of 227 posts

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

#21
post #4

People who worked through HtDP: what are your impressions?

1) it's near paradigm agnostic

2) it does not lie, gives a very nice structured way to think about data and processing it through simple cases (product and sum types without naming them)

3) it's quite small step read, nothing as extraordinary as SICP

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

#22
When I started my Bachelor in Italy (Bologna) I had actually not enrolled yet to the degree, and I was instead following both Computer Science and Philosphy. My plan was to continue both of them, or to choose one. We had this first year programming course taught by a fairly younger teacher (39), Ms Busi: I was expecting not much from it because I thought it would be an introductory course on programming OOP stuff with Java, things that I had done fairly extensively during the high school program. Hower, on the first day, she explained us that we were going to use a language called "Scheme" and that our reference book was going to be freeily available (in general, courses in Italy often require expensive books - sometimes ones that you won't find on the internet since they are written by exactly your little-known professor and will be available in selected book shops of the city), the book was "How to Design Programs". She said that one of the goals of this choice was also to decrease the difference in levels between students: we would use a language nobody knew, and approach a paradigm that nobody knew, and this would have made her (interactive) lessons and the lab practice more interesting. I also remember how she said "the organization of this course is going to be simple: every day, you will come and I will write down a problem on the whiteboard, and we will find a solution. Then, we will find a better, more beautiful solution, and that's it". I could see she knew that this choice was going to upset people, so much that she tried to sweeten the pill by saying "this is how they teach programming at MIT".

Indeed, the course did upset people. I remember how people constantly complained how shitty this decision was, how "people in the 1st year engineering classes are doing real Java programming while we do this shit no employer asks for", some noted how the language was stupid, or in the best case just a toy, useless in "the real world". Thing got worse when some people realized that, contrary to their expectations, they did not know how to program, since they could not do eg. graph traversals once that was stripped of its OOP or Java-like envelope - "I will fail the year because of the bloody scheme!", they would say.

To me, instead, it was revelatory. We did indeed solve one problem per week, and although the problems were less sexy than the ones I was expecting (finding the max of a list is not the coolest thing in the world), promises were kept, and little by little I started appreciating how much you could express with so few lines or predefined functions, leveraging only on very few concepts (eg. recursion), it was different from the programming we had done in high school. It was also a big difference with the university classes of philosphy, where "assistant professors" (underpaid PhD [students]) will come to read you a book AND a comment to it, with very little intellectual work needed from either them or students. I quickly decided to follow only Computer Science. I became no black belt lisper or anything, but that style of programming, of looking at problems, software and the whole field certainly influenced me. I am currently enjoying my role at a FAANG company, and thinking about all of this made me want to write her an email to thank her, but the saddest thing is that I can't do it because right at the end of that academic year, Ms Busi actually died, unexpectedly, at the age of only 39. First year student of CS in Bologna now learn Python programming.

(this is her uni page if you are curious: http://www.cs.unibo.it/~busi/)

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

#23

It's always interesting seeing the textbooks that are renowned by professors/people with prior knowledge, yet disliked by actual students. The Feynman Lectures on Physics is a pretty famous example (iirc, the actual course was received pretty negatively by students). I wonder how many people have actually sat down with a bunch of students and done a real experiment with textbooks. It's quite easy to think that a text…

> MIT students are far stronger than average and can generally skip certain elided steps that other students cannot. They are stronger at what? Either they know things already or they don't. If they know things already then they can skip steps and if not then they can't or can use guesswork. And that's what any other human being will do.

They are stronger at thinking -- higher IQ for pattern matching, problem solving, and creativity. Better ability to remember something after just one or few exposures, and recognize it when it is hinted at indirectly. Better ability to visualize without being given illustrations. More able and willing to spend time and paper on working out missing details. Any or all of the above.

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

#24
I haven't read HTDP and can't authoritatively comment on it /have no idea how it compares to SICP, but I found this statement pretty ridiculous:

> While SICP (yes, everybody uses the acronym) is considered a holy grail for serious computer scientists, it's hella hard to figure out. For me, programming "methods" that make me jump through intellectual hoops made of mathematics make it hard for me to learn the actual /programming/.

I started learning how to program in high school using whatever resources I could find (my school didn't have any programming courses beyond an introduction to 1980s BASIC, so independent study was the only option), initially following the very nuts and bolts-oriented instruction in C++ Primer Plus (I arbitrarily chose this as a good intro textbook based on my limited understanding of what constituted 'real' programming versus BASIC). I spent the better part of of 2 years making unremarkable C++ programs that were little more than basic math and control flow mashed together with the C++ standard input/output libraries.

At some point, I happened upon SICP, and learned more about computer science and programming in six weeks than I had in all of my previous self-study. I hold that it was, and still is, a remarkably succinct and understandable introduction to the fundamental concepts that underlie computer science. Yes, math was involved, but I didn't need to learn anything beyond my basic high school algebra education to understand how that math translated into programs: SICP did an excellent job of explaining how programming related to that math. Most importantly, it was /fun/: working through SICP made me feel like I was learning a new way of thinking, not just learning how to translate something I already knew into computer language.

Other descriptions of HTDP suggest that it combines my painful slog through the nuts and bolts of programming (albeit more succinctly and less painfully) with SICP's math/CS elements, so it's probably a better textbook for tackling both at once. However, it's crucial that it does both: to focus only on "actual programming" as the author suggests is probably a surefire recipe to convince students that computer science is a dull field consisting solely of writing instructions for computers, with no thought whatsoever into what instructions make sense or why.

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

#25
post #3

On htdp.org: https://htdp.org/2018-01-06/Book/part_prologue.html "If programming were just about numbers and arithmetic, it would be as boring as mathematics." What's wrong with this author?

"Just kidding: mathematics is a fascinating subject, but you won’t need much of it for now."

Thanks. It's on a sidebar and I didn't see that. Still, I don't think that's good humour.

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

#27
post #23

Earlier quoted context omitted.

> MIT students are far stronger than average and can generally skip certain elided steps that other students cannot. They are stronger at what? Either they know things already or they don't. If they know things already then they can skip steps and if not then they can't or can use guesswork. And that's what any other human being will do.

They are stronger at thinking -- higher IQ for pattern matching, problem solving, and creativity. Better ability to remember something after just one or few exposures, and recognize it when it is hinted at indirectly. Better ability to visualize without being given illustrations. More able and willing to spend time and paper on working out missing details. Any or all of the above.

Source citing any or all of above properties?

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

#28

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

Or too much for anyone.

Now if the author is bummed by the "mathematics" of SICP he sure will have himself handled pretty roughly by TAoCP :)

disclaimer: I haven't read SICP but as others have pointed out I doubt there's any significant math in it. I presume the author was referring to a heavy dose of informal reasoning.

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

#29
post #4

People who worked through HtDP: what are your impressions?

I liked it. My least favorite part wasn't the book itself but rather DrRacket. DrRacket's not bad, in fact it has some slick features, but I don't consider it great either. As an IDE it's good, but as a text editor it's poor. But then again my brain has been poisoned by Vim, DrRacket is probably great for young students without preexisting biases like mine. I've been using racket for almost all of my recreational pro…

I will agree with you that any programming language that has the editor locked-in (thinking Mathematica) is simply not worth it's salt.

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

#30
I think it's worth pointing out why the author's of SICP themselves acknowledge why it was phased out.

Praphrasing, it essentially boils down to the kind of applications developpers of today are writing. People are now mostly slinging libraries they have a superficial understanding of together in a black-box style. So for most proprammers there's a lot of prodding and tinkering and this isn't a skill that SICP teaches.

disclaimer: I don't think I've imagined reading this however didn't bother looking for the reference.

Post reply on HN