|
[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
|
|