Top critical review
8 people found this helpful
A brilliantly atrocious work
on 5 October 1998
As the standard text for the introductory computing course, I have heard vicious, bitter commentary as well as singificant praise from fellow computer science and past students.
Nevertheless, there seems to be common points of agreement which my own experiences support. Simply there is fewer more ambitious and innovative books as this one. SICP covers such vast areas of programming theory in such terse, almost polemic language (helped by the use of arcane Scheme), that it can be covered almost as a poetic manual to the art of programming. As much as a meditation of the process as a procedural discourse on said subject.
Yes, is it appropriate for an introductory course? Clearly, the answer is NO. In fact, in our school, the book is literally thrown at the students, who are subject to learning the course by themselves with paltry guidance from professor or assistant. I assure you for a freshman who doesn't get the assistance that MIT students take for granted, the book becomes a puzzling, painful enigma that does more harm than good. Because the book requires a paradigm shift from linear to recursive problem solving, even seasoned programmers will need help to understand the key concepts.
Many peers have said that this book is essentially hostile to introductory programees. It seeks to teach theory; it seeks to teach method, but does neither particularly well for the sake of the audience. It fails rather miserably in introducing basic concepts in a manner anything related to an 18 year old computer student who just got out of high school. One conjectures that the terse language of the book suggests the reader should be already familiar with many of its concepts.
It is, in effect, forcing a child to learn "Hamlet" when he/she is trying to read Dr. Seuss.
Looking back at the book, frankly, I do find it remarkably rich. In fact, I'd wish such a course might have been taught after an APPROPRIATE introductory course on structures and program interpretation was taught. Alas, this book does claim to be an introductory programming book. In that sense, without significant assistance, this book bludgeonly fails to do so.