Chris Beggy on Fri, 7 Dec 2001 19:30:16 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Suggestions for a 'computer science' textbook...


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