Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One potential downside for novice programmers is that some of the examples are a bit deeper than what you find in most beginning programming books. For example (as exhibited in the blog post topping this thread), writing programs pertaining to differential calculus. Obviously, lots of non-programmers have studied calculus, but lots haven't, as well. To the extent a reader might stumble on some example programs, SICP could be challenging, even if the programming content itself starts at zero and builds up.


It’s supposed to be a rigorous and challenging introductory course for first-year MIT students 40 years ago who had no previous computer programming background.

For someone who is not as well prepared as a typical first-year MIT student, something else might be better, but it’s reasonably accessible in my opinion. I would have loved to have a course like SICP as a high school student.


The target audience for SICP seems to be basically a freshman Gerry Sussman. There's no doubt it's reasonably accessible to people with a suitable combination of background and aptitude, but the historical evidence seems to be that it's not accessible to the typical CS undergraduate: according to https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf it had a wave of adoption as a CS 101 text but enthusiasm soon soured. In my experience, even The Little Schemer, which covers much of the same material, from a similar perspective on computing, but in a much more streamlined and learning-friendly form, isn't close to being universally accessible for unsupervised learning.


My quick take is that the authors of the linked essay have a circumscribed and very industry-focused view of what an introductory CS course should teach and what kind of things a student should be expected to learn. Their primary goal seems to be preparing students for a follow-up Java course (of the early 2000s style of Java), but without dropping all of the incidental complexity of Java/C++ on the students right away. To that effect they have pared down most of the “computer science” content of a SICP type course, and focused heavily on the computer programming process, analogous to the way middle school English classes teach about writing.

(Disclaimer: I have not directly evaluated their curriculum/textbook.)

This differs markedly from my own opinion about the proper goals of a ‘computer science’ course at the undergraduate level, which is to teach timeless principles and flexible thinking without bending to fashion (especially fashion which is now a decade out of date), and to prepare students for follow-up computer science courses such as data structures / algorithms, theory of computation, programming languages, or in a more applied direction databases, networking, graphics, operating systems, numerical analysis, machine learning, and so on. A lot of these follow-up courses will be substantially mathematical and will rely heavily on analytical skills developed in in introductory CS course and in mathematics courses (not just on programming skills per se).

But if updated for 2018 the authors’ curriculum would be appropriate as a course titled “introduction to programming” or the like. I agree it sounds like an improvement vs. first courses that start students out on C++ or Java (their main comparison in the linked paper).

YMMV.


The authors are Matthias Felleisen and other core PLT Scheme/Racket guys. They're hardcore members of the academic Scheme community, absolutely not very industry-focussed guys, and the real industry-friendly contingent apparently doesn't much like HtDP either: http://www.ccs.neu.edu/home/matthias/Thoughts/colleagues.htm... . HtDP is often described as a bit of a grey slog (I've dipped into it but haven't done it or read it cover to cover yet), but the authors absolutely haven't given up on the ideal of teaching timeless principles and modes of thinking, they're just more realistic about how the material has to be paced and prepared to get a normal body of first-year undergraduates through it successfully.


”For example, writing programs pertaining to differential calculus.

That’s only a description of Newton’s method, plus an example on symbolic differentiation (2, respectively 6 pages in a book of over 600 pages, in my copy)

Both are about a tiny corner of differential calculus: differentiating ”expressions that are built up using only the operations of addition and multiplication with two arguments”. It doesn’t involve goniometric functions or integrals.

So, it is is about turning ax² + bx + c into 2ax + b. I don’t know when exactly I learnt that, but it was way before university, when I was somewhere between 13 and 16 years old. It was part of the normal curriculum.

”SICP could be challenging”

I would hope so. If it couldn’t be challenging, how are students supposed to learn from it?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: