Krishnamurthi has also done some really great work teaching introductory programming. He and his coauthors wrote a book meant to occupy a similar space as SICP, available here: http://www.htdp.org. The reasons why they felt an additional text in place of SICP was necessary can be found here: http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf.
Krishnamurthi and his colleagues also maintain Racket (http://racket-lang.org/), a first-class development environment, and excellent documentation. All and all just a really great example of academics who simultaneously care deeply about teaching, publish top-tier research, and release real-world tools.
Thanks for posting those links. That explains a lot about where he's coming from -- I hadn't caught the Racket and HTDP connection when I posted my previous comment.
I've read the paper, but I still find the grand metaphors like "Post-Linnaean" a bit of a reach. If you want to say that we've reached a point where few languages are pure in their approach (functional, object-oriented, etc), fine. If you want to say modern languages don't pay much a penalty for garbage collection, also fine. I just don't see the evidence that the approach hinted at has relevance to any context outside of Shriram Krishnamurthi's classroom at Brown University. It seems that most of his points that have practical application will be really old news to the programmer part of the HN readership, and have no practical value for those who aren't.
What gave you the impression that the paper was supposed to have relevance outside of a classroom? The paper has practical applications to teaching, which should be self evident given the content and venue of the paper. If you don't care then don't upvote the story. But don't try to pass off your point as a valid criticism of the paper.
Sorry I wasn't clear. I wasn't trying to pass anything off. Someone posted a link to paper - I read it and wasn't impressed with the reasoning. (And less than impressed with the over-reaching metaphors.)
I do disagree with the author's apparent contention that, say, a historical appreciation of the evolving nature of programming paradigms is somehow holding students back today. Aside from argument by assertion, I'm missing the evidence that his approach is the solution to a problem.
What I was also missing, and am still unenlightened about after your response, is the relevance of his classroom approach to say, the readers here. It seems nearly monthly we have a story related to the virtues of SICP and that I get -- it's a great book that's changed a lot of programmer's perception of what programming is about. In this case, I'm missing a similar connection outside the classroom.
Suggesting that if you have a 'better' way of teaching, that there should be some impact outside of the classroom... seems like a perfectly valid criticism.
If the teaching is simply an end in itself and the students aren't measurably better with the new method, how can you objectively say that the method of teaching is better?
If it is better, it will produce better results, to suggest otherwise is nonsense.
In case anyone's scared away by the format, it's an accessible, three-page, quick read. And it's really interesting. The author's approach of blending language survey with language construction is a strategy I've recently employed, and I've grown more as a programmer, more rapidly, because of it.
Krishnamurthi's class was one of the best classes I've ever taken. The book didn't exist when I took it, but the the lecture notes from our class would eventually become the basis for the book, so I assume the book's excellent as well.
We used this at UT Austin, and it's a great book. It doesn't have a lot of stuff that you would find in a graduate PL course (e.g. type theory), so it doesn't prepare you to read PL papers, but building a lisp in scheme is a lot more fun than learning type theory!
And probably more useful, as the author asserts in his paper.
Shriram Krishnamurthi is a genius; I saw him at a conference last year and regardless of the topic of the talk given, he always had insightful comments and questions that were close to a level of having done the research himself. Honestly, I have never met anyone more competent in such a variety of topics.
I was hoping the "novel" approach would be to use realistic fiction to get students inside the mind of a programmer, using actual languages. A novel has an advantage over an autobiography because the characters can be put in teaching situations in an ideal order. Also, if the author is honest about his own experiences, he will not let the characters self-edit their experience to present a hopelessly optimistic or pessimistic picture of programming.
Natural language is ambiguous, sorry for being misleading; I meant "novel" in the sense of "fresh, not seen before", referring to the more pragmatic paradigm described in the paper.
The comments in this thread are so gushing that I suspected we were being scammed by vanity accounts trying to flog this guys wares (books), but they're mostly from big karma/long time readers so I was wrong.
Okay, so other than being a hyper-intelligent pan-galactic sex god, what has this guy done for us lately? (read as: request for more info and less gushing. Let's just take the gushing as given)
I guess a few of us have been through a programming language concepts course, and felt that the matter is really interesting, but that it could be better connected to what's happening on the ground. This guy is vocalising that perspective.
Also, Racket is promising. I think this is the first time we've had a scheme platform that has this combination:
- Simple installation
- Solid package management arrangements.
- Multiplatform
- Nice IDE.
- Free software
- Easy access to unix api
Other lisps have had a couple of these features. But Racket is the first lisp I've seen that feels like a serious alternative to perl/ruby/python. It may lack a solid standard library - I haven't looked into this yet.
just by reading the contents, i wish i had this book 20 or so years ago. back then, i had to find these subject piece by piece in books and white papers. work of a genius. thanks.
Krishnamurthi and his colleagues also maintain Racket (http://racket-lang.org/), a first-class development environment, and excellent documentation. All and all just a really great example of academics who simultaneously care deeply about teaching, publish top-tier research, and release real-world tools.