Live data from Hacker News

How to Design Programs (2014)

htdp.org

31–40 of 141 posts

Re: How to Design Programs (2014)

#31
Back in 2008/2009, I was lucky enough to be in the NU PhD program straight out of undergrad. I had the amazing opportunity, as a TA, to teach this curriculum in the second-semester CS course that all of the CS/SE students went through.

This curriculum, along with NUs co-op model, creates some of the most spectacular engineers I've ever had the pleasure to work with. HTDP gives them the tools, and the the co-op gives them the experience. By the time they graduate, they are immediate contributors who are ready to accelerate and grow rapidly during those early years of their career.

While my undergrad experience was exceptionally different (yet equally transformative), if I could recommend a model for teaching software engineering, it would be the structure developed by the folks who created HTDP.

Re: How to Design Programs (2014)

#32

Earlier quoted context omitted.

> To caricature SICP-style instruction a bit, I'm imagining someone learning that recursion is useful (Scheme peeps seem to love it) without also being taught it generally has poor performance characteristics. SICP teaches that recursion can have bad performance and how to use it without blowing the stack or wasting time with unnecessary computations. Scheme, the language, requires tail call elimination so compilers…

Yes, I agree, that is a caricature. More seriously, I think leaning on this language-specific feature in a book that's supposedly teaching "general programming 101," or whatever, is in bad taste. As it says: > One reason that the distinction between process and procedure may be confusing is that most implementations of common languages (including Ada, Pascal, and C) are designed in such a way that the interpretation…

I wouldn’t really call tail-call elimination a feature, language-specific or otherwise. Instead, I would describe the lack of it as a bug. If you examine what’s actually going on in compilers that lack tail call elimination, what you witness is the saving of registers to the stack whose values are provably never going to be used.

Re: How to Design Programs (2014)

#33
I'm a bit sad that contracts became the enduring legacy of HtDP and all the brilliance of the approach to recursive programming was just tossed by the wayside by the "digerati". I would have really liked to use those tools in my professional life. I guess the idea of giving up the compile step was way before its time.

Re: How to Design Programs (2014)

#35
post #31

Back in 2008/2009, I was lucky enough to be in the NU PhD program straight out of undergrad. I had the amazing opportunity, as a TA, to teach this curriculum in the second-semester CS course that all of the CS/SE students went through. This curriculum, along with NUs co-op model, creates some of the most spectacular engineers I've ever had the pleasure to work with. HTDP gives them the tools, and the the co-op gives…

Speaking as a combined BS/MS grad who TA'd the first semester intro course for 6 semesters and had the pleasure of having one of the authors advise me on a senior project type thing, a big +1 to this.

I sometimes feel like I'm crazy when I tell people I wouldn't pick nearly anywhere else for undergrad CS, but time after time when I compare with peers on their experience, this model really is incredibly different and only a few others schools use it (the list is growing, but notable ones being Brown and Waterloo).

If anyone wants a high level overview of the approach, I can't recommend this essay enough: https://felleisen.org/matthias/Thoughts/Developing_Developer...

Re: How to Design Programs (2014)

#36

I never understood the appeal of this book.

I never understood the appeal of this, or SICP, or Scheme in general. I learned much more about computer science reading algorithms and data structures textbooks, especially Knuth. There's a reason MIT uses Python for its intro courses now, after all.

While I have friends (and many colleagues) who graduated from MIT CS and are very competent engineers, I don't think MIT is the shining beacon of the best SE/CS graduates. Their program is certainly very good, but if someone asked me (for CS/SE specifically) about going to MIT or NU, I'd point them to NU. For almost everything else, it would, of course, be MIT.

Re: How to Design Programs (2014)

#37

I never understood the appeal of this book.

I see two sides: the numericals and the algebraists. I've talked with people who also see these two sides but call them differently. As I see it, this book is closer to the algebraists side. Thus, you probably lean closer to the nuemerical side. I also like to think about it as the Turing perspective (numerical, algorithmic) and the Chruch outlook, which is more algebraic-symbolic. At the end of the day, it's both "c…

Some people prefer not to commingle the functional, lambda-calculus part of a language with the parts that do side effects. It seems they believe in the separation of Church and state. --Guy Steele

Re: How to Design Programs (2014)

#39
post #36

Earlier quoted context omitted.

I never understood the appeal of this, or SICP, or Scheme in general. I learned much more about computer science reading algorithms and data structures textbooks, especially Knuth. There's a reason MIT uses Python for its intro courses now, after all.

While I have friends (and many colleagues) who graduated from MIT CS and are very competent engineers, I don't think MIT is the shining beacon of the best SE/CS graduates. Their program is certainly very good, but if someone asked me (for CS/SE specifically) about going to MIT or NU, I'd point them to NU. For almost everything else, it would, of course, be MIT.

What university is NU?

Re: How to Design Programs (2014)

#40
post #36

Earlier quoted context omitted.

While I have friends (and many colleagues) who graduated from MIT CS and are very competent engineers, I don't think MIT is the shining beacon of the best SE/CS graduates. Their program is certainly very good, but if someone asked me (for CS/SE specifically) about going to MIT or NU, I'd point them to NU. For almost everything else, it would, of course, be MIT.

What university is NU?

Northeastern University, which is where the roots of HTDP can be found.
Post reply on HN