News for hackers. Stuff that matters.
Re:If not SICP, then what? Maybe HTDP? by wa1987 on Saturday January 12, 2019 @06:31AM (#18890758)
People who worked through HtDP: what are your impressions?
Re:If not SICP, then what? Maybe HTDP? by loosetypes on Saturday January 12, 2019 @09:59AM (#18891412)
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? by darkpuma on Saturday January 12, 2019 @07:05AM (#18890858)
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 programming for the past few years but I don't do it with DrRacket.

Re:If not SICP, then what? Maybe HTDP? by davidgrenier on Saturday January 12, 2019 @08:13AM (#18891031)
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? by azhenley on Saturday January 12, 2019 @08:21AM (#18891042)
You’re free to use Racket with any editor. DrRacket is just one IDE that you can use that is geared towards learners.
Re:If not SICP, then what? Maybe HTDP? by vanderZwan on Saturday January 12, 2019 @08:26AM (#18891055)
Isn't HTDP very DrRacket oriented though?
Re:If not SICP, then what? Maybe HTDP? by chongli on Saturday January 12, 2019 @10:04AM (#18891430)
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? by pvitz on Saturday January 12, 2019 @06:41AM (#18890790)
I worked through it some years ago because I was interested in Racket. It is solid when it comes to programming, but if your goal is to get the Scheme feeling, the little Schemer would be a much better choice.

BTW a very nice introduction to Racket is also "Realm of Racket".

Re:If not SICP, then what? Maybe HTDP? by alexanderthe- on Saturday January 12, 2019 @11:00AM (#18891717)
The book is great, I've been working through HTDP and it's generous amount of programming exercises casually over the past year as a self learner. I had been dabbling in programming over the past several years (as a true dilettante) and have utilized several resources on my journey (CS50, Programming: Principles and Practice Using C++, a touch of SICP), but it wasn't until progressing through HTDP that I really felt confident I was learning HOW to program. The pedagogy the book uses instruct a beginner on how to program is sound and uses many of the concepts touched upon by the popular "Learning How to Learn" edX course. The natural progression of the exercises as well as the evolution of the language used throughout the book(BSL or Basic Student Language) pair nicely and you slowly feel yourself becoming "wizardly" as the training wheels are slowly being stripped away.

The authors do a good great job in promoting good software craftsmanship from the very beginning of the text. Like any good teachers they reinforce the importance of developing good habits that as a beginner you sometimes take for granted, such as writing unit tests for newly defined functions. Thinking through programming exercises is done methodically with HTDPs Design Recipe, which enforces the use a function signature, purpose statement (comments), a header, and functional examples - followed by a template to flesh out the basic structure of the code you will be using to define your function.

I've watched most of the SICP lectures by Sussman and Abelson and while brilliant, it becomes quite clear that even the professional programmers in the room have trouble keeping up with the pace of the lectures. As a beginner, I was acutely aware that I had bitten off more than I could chew and I will revisit them and SICP after completion of HTDP.

As a side note, I discovered small typo in one of the examples and emailed the lead author (Matthias Felleisen) and he responded to me same day very appreciative that I took the time to do so. If he or any of the other authors read this, thank you! I'm still diligently making my way through and enjoying your text!

Re:If not SICP, then what? Maybe HTDP? by punchclockhero on Saturday January 12, 2019 @07:07AM (#18890864)
Only worked through a part of it, but left a pretty good impression. Writing style was pleasant to read, sometimes imagined it read in Bob Ross' voice. Only Scratch has a shorter "zero to moving pictures" time. The language manual is so tightly integrated with the book it doesn't leave a single character of code unexplained (I've read beginner's books that never explained "+=" while using it in code samples). My only nitpick is that the design recipe wasn't sufficiently explained and it finally clicked when I tried the edx course based on the first part of HtDP, which has its own problems like a plodding pace and unchallenging excercises. All in all a great beginner's book.
Re:If not SICP, then what? Maybe HTDP? by philonoist on Saturday January 12, 2019 @08:43AM (#18891119)
Could you please link me the EDX course site? I am not able to find it. Coursera scrapped it's 2015 version
Re:If not SICP, then what? Maybe HTDP? by punchclockhero on Saturday January 12, 2019 @09:57AM (#18891402)
Seems to be a newer version of what I did, so my gripes might be fixed. https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
Re:If not SICP, then what? Maybe HTDP? by kod on Saturday January 12, 2019 @09:09AM (#18891207)
It's the best book I've found for actually teaching people how to solve problems using programming, rather than just learning semantics.

I use it for continuing education at a company, the only complaint I've heard from people is that it's very deliberately paced.

I do wish there was an equivalent that used a statically typed language, because the actual approach is very fundamentally based on types. I've spoken with the authors about this, and the reasoning was twofold: 1. people are going to have to deal with unityped languages in industry; 2. existing error messages for static languages were bad. At this point, something like Elm might be a good fit, although you'd lose out on lispy things like quasiquote.

Re:If not SICP, then what? Maybe HTDP? by AlexeyBrin on Saturday January 12, 2019 @12:37PM (#18892249)
> I do wish there was an equivalent that used a statically typed language

Not exactly an equivalent, but a very good book (that uses a statically typed language) is "Elements of ML Programming" by Ullmann.

Re:If not SICP, then what? Maybe HTDP? by kod on Sunday January 13, 2019 @10:56AM (#18897119)
Yeah, that's a good book, but as you noted it falls under teaching a language, not so much teaching how to think.
Re:If not SICP, then what? Maybe HTDP? by agumonkey on Saturday January 12, 2019 @07:50AM (#18890973)
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