Hacker News new | ask | show | jobs
by hga 5864 days ago
First on the Blub School note: it's interesting that MIT is now a Blub School since with the purging of Scheme from the curriculum a student can graduate having written code only in Python and Java (shades of the changes to US Boy Scouting that for other reasons drove me out of it, one could become an Eagle Scout without ever having camped out, built a fire or cooked food over an open fire). Wrapped in cotton batting, as it were, I wonder if they will even learn recursion well enough....

This was an entirely political exercise (the command to entirely purge Scheme from the base undergraduate curriculum), now that I think about it an example of not letting a crisis go to waste, for the department panicked over the enrollment crash and SICP was replaced with flashy robots for students to play with.

Anyway, the old official philosophy was that functional programming should be learned before imperative (serious OO wasn't even taught, that got added to 6.001 but not SICP later when the OO mania took a firm enough hold); in spring 1983 6.001 Sussman stated with a variation or subset of this famous quote by Dijkstra:

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

You do have a good point about sequencing. Many have noted that the people who learn and appreciate functional programming best are those who have been thoroughly scared by imperative programming experiences. I for instance took 6.001 exactly 7 years after my start with punched card IBM 1130 FORTRAN "IV" (only numeric IF statements) and by then a lot more imperative programming including a fair amount of C, and I sort of got it. I get it a lot more now that I've gotten many more scars (back then I sensed there was something really big here, now I feel it in my bones).

I can well believe what I've heard from others as well as you that many less experienced programmers don't get it when they do SICP early in their programming careers. On the other hand, there's a lot more to SICP than functional programming ... and there's pretty much no way to give students enough scars in 4 years of undergraduate programming so that a late functional programming course will be certain to "take". So for those who aren't autodidacts I'm not sure what to recommend....