Chris Beggy on Fri, 7 Dec 2001 19:30:16 +0100 |
gabriel rosenkoetter <gr@eclipsed.net> writes: > On Thu, Dec 06, 2001 at 04:19:05PM -0500, Chris Beggy wrote: >> Are you asking me a question? > > Yes. And that question was... isn't SICP focused on Scheme (and, > generally, on high level programming), as opposed to any hardware > concepts or true (math) computer science? > > Having used SICP in a class that did recursion to death by way of > Scheme and taught little else, that's my memory of it, but it could > be skewed. Your question was rhetorical. Your judgement of the book is pretty clear, and your knowledge is based on having used it for a class. That's a great basis for your opinion. I prefaced my recommendations with: >>You will probably get many suggestions from the list. as a way to acknowledge that there will doubtless be many book recommendations which each suggester thinks is best. I wouldn't have recommended SICP if I didn't think it was one of the two best books about computer science I know. I'm sure you think the same about your recommendations. This is what I wanted to avoid, but here are my responses to some of your issues: SICP uses scheme to illustrate computer science concepts, but the authors could have used APL, pascal, C, C++, perl, Java, etc. Their justification for scheme is: We never formally teach the language, because we don't have to. We just use it, and students pick it up in a few days. This is one great advantage of Lisp-like languages: They have very few ways of forming compound expressions, and almost no syntactic structure. The authors expect the students to always be looking through the scheme, not focused on it. Maybe that's unrealistic, though. I agree, SICP certainly deals with high-level programming, and the authors' goal for those who complete the course is that: They [the students] should have command of the major techniques for controlling complexity in a large system. Again, that's ambitious, but the foundation is available. SICP does consider hardware, in Chapter 5, from the perspective of the architecture design of register machines, with data path and control. The authors mention: In designing register machines, we will develop mechanisms for implementing important programming constructs such as recursion. As for math and computer science, I think the authors agree with your view: Underlying our approach to this subject is our conviction that ``computer science'' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology -- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of ``what is.'' Computation provides a framework for dealing precisely with notions of ``how to.'' and I agree, SICP doesn't spend time on math. SICP also fails in the areas of project management, design specification, design requirements, documentation, test, testability, and maintenance. All of SICP is too much for a one-semester course, and maybe even for a two-year course. Nevertheless, it's a good book. I'm not trying to convince you, just to let you understand my point of view. Chris ______________________________________________________________________ Philadelphia Linux Users Group - http://www.phillylinux.org Announcements-http://lists.phillylinux.org/mail/listinfo/plug-announce General Discussion - http://lists.phillylinux.org/mail/listinfo/plug
|
|