Live data from Hacker News

If not SICP, then what? Maybe HTDP?

stevenrosenberg.net

171–180 of 227 posts

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

#171
post #79

Earlier quoted context omitted.

> people with prior knowledge, yet disliked by actual students This is the key!. I was about to say SICP was great then, yeah, I read it only when get interest in build compilers and after 20 years on the craft. I think you need a progression on material: 1- Start with a highly practical book more alike build little experiments/programs "Build a pacgam game" "Make a calculator", etc... ie, do a single pass for the mi…

That’s very well put. I’ve actually really wanted a “cookbook” for compilers. Basically small, self contained lessons for writing a particular part of a compiler. I.e. here’s how to write a typechecker, or how to write a garbage collector. The closest to that I’ve found is Crafting Interpreters. A lot of the compilers textbooks focus on the theory or general concepts, which is great, but I want to get my hands dirty.…

I agree for the cookbook. I'm building a lang I have scavenged so much info from so many places, but all is kind of disconnected. Or worse, all stop at generate the AST, and barely interpret the AST at the level of a calculator and maybe simple functions.

For example, I need like 5 different sources to finally have a grasp in how pattern match, and build a solution that later found in another paper.

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

#172

I'm the author of the original blog post, and I wanted to say that SICP, as well as HtDP, and even a book like Robert Sedgewick's Computer Science ( https://www.amazon.com/Computer-Science-Interdisciplinary-Ro... ) are in a completely different category than more mainstream how-to-program books (like anything from O'Reilly, Manning, No Starch, Pragmatic Programmers) and even the other popular college texts like Y. Da…

Thank you for this much more nuanced response. Your original post was very critical of SICP in a way that didn't seem to do it justice - I think that's what set of much of the debate in this thread. But if what you say in this comment is what you really meant, I fully agree with it.

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

#173

Earlier quoted context omitted.

The curriculum is too artificial and disjoint from the rest of their CS degree. That was my takeaway from CS61A at Berkeley. I thought that Scheme was incredibly elegant and I was disappointed that we never used it again. The profs sure were pleased with themselves at the end of CS61A and I imagined later that they thought their preferred outcome would have been that we pursued a PhD using Jikes. SICP was the text wh…

As I remember it, the book SICP itself wasn't really the core of CS61A... the lectures and slides were, and they drew off the concepts in SICP. No one read the book, but we learned from the (fairly good) lectures and explanations of the concepts, and especially the projects of course. Those concepts were and remain a foundation for how I think about programming—at the level of elegant structure and short modular thin…

Are you guys talking about an older iteration of 61A? It doesn’t really make sense to read SICP nowadays if the course is taught in Python.

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

#174

There are two models for CS education. One model is for students who want to learn the theories of computer science and be computer scientists , and the other is for students who want to be programmers. SICP is the foundation for people who want to be computer scientists. That’s not everyone. But from what I’ve found, all the top CS schools create computer scientists, and the other CS schools create programmers. Whil…

> While it’s easy for a computer scientist to make the jump to programmer with just a little guidance, it’s much harder to go the other way. I don't think it's actually that easy for a computer "scientist" to unlearn all the idealistic stuff that can actually be counter-productive in a real-world programming environment, particularly if they're enamored with languages like LISP or Haskell. These people easily get dep…

Google is full of computer science types. I think it is safe to say if all you are is a code monkey you will not make it in. Fortunately for you there are a million other employers that will be happy to hire you to do some crappy programming. But let us not pretend that you are anything but a code monkey in this case.

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

#175
post #145

I think programmers reaction to the mathematics in SICP is completely hysterical - in the sense of hysteria, not comedy. For example, the author-professors who wrote HTDP, quoted at length in this article complain about using 'complex domain knowledge' and the author of the blog post does as well, but the running example used is literally arithmetic . In particular: Section 2.1 starts by building a data type of ratio…

"already understands these relationships so well" Is that true for complex numbers?

[deleted]

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

#176

I think programmers reaction to the mathematics in SICP is completely hysterical - in the sense of hysteria, not comedy. For example, the author-professors who wrote HTDP, quoted at length in this article complain about using 'complex domain knowledge' and the author of the blog post does as well, but the running example used is literally arithmetic . In particular: Section 2.1 starts by building a data type of ratio…

For me it wasn't the maths in SICP, it was the physics, or rather the particular examples in the chosen domain.

I love physics but coding Newton-Raphson does not engage me.

(I had a similar reaction to particular Python book -- Roman numeral conversion? blah!)

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

#177

I have found that the best way of learning the HtDP approach to program design, at least for me (I find the book itself a bit dry), are the EdX "How to Code" free moocs [1] [2]. The instructor is fantastic. It completely changed the way I program and design. If you like the approach and want to learn more, like, for instance, how to extend it to OO design, I list below links to several courses (most, except for the l…

I happen to best learn through video lectures more than reading. Thank you for your effort. I am starting with these.

Could try both, the book (HtDP) is more rigorous than those two MOOCs as they're meant just as an intro where you progress into many more courses (as part of the micromasters on software development) while the book is a full grounding in CS 101. Somebody correct me if wrong but I don't remember any big-O analysis in the MOOCs or the parsing XML chapter, traversing graphs, the content on fixed-size arithmetic, plus the 500 or so exercises the book has compared to the three or four at end of each unit in the MOOCs. For example the sierpinski triangle assignment in the MOOC is pretty straightforward, but in the book you also generate a fractal savannah tree using trigonometry functions that isn't so straight forward, but when you see how they do the generative steps in the book you get that 'eureka' moment learning about Bézier curves. https://jeremykun.com/2013/05/11/bezier-curves-and-picasso/

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

#178
post #127

"that make me jump through intellectual hoops made of mathematics" There is actually surprisingly little mathematics in SICP. What is does have are mechanisms that are then analysed and modelled, after which the mental model is adapted so it can be turned into computational model that is a faithful representation. Some of the presented mechanisms are mathematical in nature, but you don't need a mathematical backgroun…

I agree with everything you say. Just want to add that SICP had a context: it was designed to be an introductory computer science course designed for university engineering students (including CS), almost all of whom take calulus in their first year, if not earlier. This was probably a valid assumption back in the day, but clearly there is a more diverse audience now. Anyway, I absolutely agree SICP was never about S…

Indeed, the context reflects the origins of CS departments. They are always were part of physics school and later electrical engineering.

All the famous CS people over say 60 started in physics or EE.

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

#179
post #84

Everyone on here is very excited about HTDP. You are mostly very smart people, and not representative of the typical CS student starting off. Many of you are driven and have rich STEM backgrounds that you draw upon. Therefore, I want to point out that there is no substantial evidence to prove most of the claims of "success" that the HTDP community claims, with regards to novice learners. There are certainly people wh…

The curriculum is too artificial and disjoint from the rest of their CS degree. That was my takeaway from CS61A at Berkeley. I thought that Scheme was incredibly elegant and I was disappointed that we never used it again. The profs sure were pleased with themselves at the end of CS61A and I imagined later that they thought their preferred outcome would have been that we pursued a PhD using Jikes. SICP was the text wh…

I quote "programs must be written for people to read, and only incidentally for machines to execute" fairly often to students, which is from the 1st ed preface.

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

#180
post #139

Earlier quoted context omitted.

>Unluckily many students who attend lectures have an attitude where they need to be convinced instead of taught. Isn't this backwards? If you're just accepting the lecturer's word as dogma, I would argue you're not really gaining an education at all. The process of being convinced and having doubts about the material resolved improves critical thinking and improves understanding of the underlying material as well.

> Isn't this backwards? If you're just accepting the lecturer's word as dogma, I would argue you're not really gaining an education at all. The process of being convinced and having doubts about the material resolved improves critical thinking and improves understanding of the underlying material as well. Maybe I think differently from you because I come from Germany. But I don't think this is backwards. I openly adm…

> Why are you enrolled in the degree course if you are critical of it instead of wanting to learn the material?

Maybe you want to learn why it is true?

Since Euclid, mathematics is about proof i.e. being convinced. If you really understand the material, you see it must be true - and need not blindly accept it.

What is taught in high school and many university courses is not mathematics, but how to use it. Like how to use Word, not how to write Word.

When you understand something, it becomes yours. You remember it longer, and can adjust and generalize it.

Unfortunately, it can be many times as much work to understand some mathematics, even some from early high school, and requires higher mathematics. So you can't understand til after you've understood it... It makes sense mathematics is taught the way it is... especially when most people are users, anyway.

But bad luck for those who need to understand and be convinced, which was so important to the developers of mathematics. i.e. mathematics filters out mathematicians.

Post reply on HN