Home :: Books :: Computers & Internet  

Arts & Photography
Audio CDs
Audiocassettes
Biographies & Memoirs
Business & Investing
Children's Books
Christianity
Comics & Graphic Novels
Computers & Internet

Cooking, Food & Wine
Entertainment
Gay & Lesbian
Health, Mind & Body
History
Home & Garden
Horror
Literature & Fiction
Mystery & Thrillers
Nonfiction
Outdoors & Nature
Parenting & Families
Professional & Technical
Reference
Religion & Spirituality
Romance
Science
Science Fiction & Fantasy
Sports
Teens
Travel
Women's Fiction
Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)

List Price: $80.00
Your Price: $76.00
Product Info Reviews

<< 1 2 3 4 .. 14 >>

Rating: 4 stars
Summary: Getting and missing the point
Review: My alma mater did not use SICP to teach computer science courses. Fortunately, I chose to read mathematics instead, and perhaps for this reason I appreciated SICP it more than I would have otherwise.

Discussions of the philosophy of programming are necessary before getting into the concrete, just as one requires the general case before receiving the discrete.

By receiving many discrete cases, as is the style of many computer science books, you may, if lucky, become a competent programmer. However, you will have to slowly tease out the underlying principles. You will be often wrong. A book like SICP gives you the general cases, it teaches you the theory, and it assumes that you have the ability to apply them to discrete ones.

I don't recall receiving all that many recipes to handle problems in mathematics (although with experience I developed my own); what I got in the very best of courses was insight into the true nature of the problem. Whatever its flaws (and there are flaws), SICP provides this insight to the aspiring programmer.

Rating: 5 stars
Summary: computer books rarely rise to the level of poetry....
Review: ... and sadly this book is no exception. Nonetheless, in 20 years of being a nerd, this is the only great book about computers that I've encountered.

If you're already a great programmer, it will take you an evening to read the first few chapters and you'll discover a precision vocabulary for discussing what you've spent 10 years learning the hard way. If you're not already a great programmer, I would have thought that these few chapters would save you from having to spend years flailing around in the dark. Unfortunately, there doesn't seem to be a substitute for practical experience.

Sidenote: the authors used to have a review wall outside their offices at MIT. University professors from around the world writing in scientific journals said "finally I understand what all this computer science stuff is about; this is the most brilliant book ever. I'm glad that we're using it to teach freshmen now." In the center was a review from Byte magazine: "I didn't understand any of this book."

SICP is tougher to read than _Teach Yourself to be a Dummy in 21 Days_ but it is the real thing, well organized and written.

I shudder as I type this, but SICP can even help you write better Perl scripts...

Rating: 5 stars
Summary: Great minds think alike, and fools seldom differ
Review: I never heard so many interesting and different views expressed for any book.some call it a waste of time and others a classic.Some refer it as an apptitude test for comp sc and others a book that has nothing to do with modern software engineering.
I think everyone is right at its own place. It all depends on how you look at things.Their is a set of inquistive ppl in the world who wants to know why and how of every thing .. why this apple is falling towards the ground and not the otherway .. isn't this a stupid question, a lil crazy for Newton to think this way so is this book.
The author starts by exploring what a program is. what is data,procedure,abstraction,modularity what we can do with it .how to model systems and why ? well all these are trivial questions and why do we care..we are living in a world of MFC's,API's,Integrated Environments..True thats why this book is a waste of time and has got nothing to do with modern software engineering.
But if you care why the apple is falling towards the ground and if you have the faculty to wonder you are going to like this book. It will give u insight in to the programing will make u think in terms of programming and not languages.. may be will add to ur creativity..This book is not easy to read.I think this book is equally difficult for a fresher and a 10 yrs exp guy.It all depends on how gifted u are. if u have it, it doesn't matter how many years u have put in to comp sc.
If you want to make an apple pie from scratch, you must first create the universe.SICP is all about this.

Rating: 5 stars
Summary: computer books rarely rise to the level of poetry....
Review: ... and sadly this book is no exception. Nonetheless, in 20 years of being a nerd, this is the only great book about computers that I've encountered.

If you're already a great programmer, it will take you an evening to read the first few chapters and you'll discover a precision vocabulary for discussing what you've spent 10 years learning the hard way. If you're not already a great programmer, I would have thought that these few chapters would save you from having to spend years flailing around in the dark. Unfortunately, there doesn't seem to be a substitute for practical experience.

Sidenote: the authors used to have a review wall outside their offices at MIT. University professors from around the world writing in scientific journals said "finally I understand what all this computer science stuff is about; this is the most brilliant book ever. I'm glad that we're using it to teach freshmen now." In the center was a review from Byte magazine: "I didn't understand any of this book."

SICP is tougher to read than _Teach Yourself to be a Dummy in 21 Days_ but it is the real thing, well organized and written.

I shudder as I type this, but SICP can even help you write better Perl scripts...

Rating: 5 stars
Summary: An absolutely amazing book
Review: However gave this book low ratings just doesn't get it

Rating: 1 stars
Summary: The worst I have seen
Review: Of all of the computer programming texts I have worked with, this is by far the worst and most confusing I have ever seen. But besides being confusing, it is also pointless. I've been programming for quite some time, and I have never had to use 90% of what is in this book. (Mostly because virtually all common languages come with high level constructs in their libraries for performing the kinds of low level operations that this book wants you do to by hand.)

The book attempts to introduce object oriented concepts using a language that is not at all suited for object oriented programming. But worst of all, it doesn't even explain these concepts using analogies that people can understand. And so beginning computer science students are throughly confused by the content of this book.

The language used (Scheme) has no practical real-world application. It is not even well suited as a teaching language because its syntax and constructs are unlike anything used in any common language today. In fact, trying to understand this book if you already have Java or C experience might be worse than starting from scratch, because Scheme is such a backwards language.

Basically, a confusing and poorly written textbook that teaches a totally irrelevent language which has no real world use (and doesn't do a very good job of teaching it at that).

Rating: 4 stars
Summary: An extraordinary text, but best used as a supplement
Review: I have very mixed emotions about this book. On the one hand, it is perhaps the best introductory work on the philosophical and theorectical issues of computation, dealing with many concepts that normally are either taken for granted by most programmers, or else are completely unknown to them. If you get past the dry, analytical tone (and the rather flat punnery), it actually becomes quite engaging. It is a book that demands careful thought on the part of the reader, and can reward dilligent and thoughtful study. It scrutinizes even such seeming obvious concepts as recursion and assignment, and often reveals a great deal of hidden complexity to them.

However, by itself it is not a very good primer to progamming, either in theory or in practice. The examples given are often unnecessarily tortuous, especially given the imperative to teach strict functional design in the first several chapters. Too much effort has been given to keeping it at 'pure' and 'general', and there is little attempt to connect the important ideas with how they appear in actual use.

Among the flaws is too great a concern with language independence, and specifically, an obsession with presenting the fewest possible language constructs needed to achieve a given purpose. It makes no attempt to present the Scheme language itself except where it is absolutely necessary in order to give an example; while this is done to keep the discussion as general as possible, it often has the effect of confusing the student. Many example programs which would be crystal clear with the use of certain language facilities are made hopelessly incoherent because the authors wanted to enforce 'language independence'.

Also, because many aspects of the language are ignored as irrelevant, the students learn only a small part of the language itself, and are left with the impression that Scheme is a hamstrung, pedantic language lacking in many obvious features. From reading SICP, few would ever imagine that it supported strings, characters and vectors, or had an iterative construct (do), an escape mechanism (call/cc), a macro facility (let-syntax and syntax-rules), or even basic stream I/O (read and write). Scheme is a simple enough language as it is; it need not be pared down any further no matter how noble the purpose.

More importantly, much of the presentation so abstracted as to be completely divorced from real practice, especially in the sections on imperative and OO programming. While this is a good thing in many ways, as it shows the conceptual underpinnings which are so often lost in day-to-day programming, no attempt is made to draw a connection between the theoretical abstractions and the concrete practices. The ideas are left floating aimlessly, and the student is left with no clue as to their relevance or value - which is a pity, because they truly are important, and understanding them can make the difference between a true programmer and a mere coder.

The section on logic databases is an excellent example of this. While it presents all the elements of keys, querying, unification, etc. in a lucid, detailed fashion, the databases are represented solely as list structures. No mention of files is made at all, in this section or anywhere else in the book - the word 'file' does not even appear in the index. Nor does it reveal that most database work today is based on the relational calculus, not predicate logic.

Similarly, the discussion of streams concentrates solely on their use as a way of representing change in state over time; not only are ports (Scheme's stream I/O mechanism) ignored, at no point is the student given any hint at all that the primary use of streams is for input and output. This is like discussing driving without ever admitting the existence of roads; it is abstraction run rampant. While the discussions are wondefully insightful, the student isn't given any way to apply them, even within the context of study.

In the end, I would strongly recommend this book as a supplement to an introductory course based around another Scheme text, such as Simply Scheme. While I think that every serious student of computer science (as independent from software engineering) should study it, really requires the work of a gifted teacher to make it clear, and it should never be used as the sole text. It is a brillant piece of work, and a wonderful source of key insights into programming, but it does not stand alone.

Rating: 3 stars
Summary: Where May I get the answers to the exercises?
Review: Hi

I bought Structure and Interpretation of Computer Programs and the Instructor's Manual hoping that the answers would be in at least one of them. No answers. I'm not enrolled in any school so don't have access via that route. Could someone please let me know where I can get them. Would greatly appreciate it.

Kevin

Rating: 5 stars
Summary: Errata
Review: Note that his book has 657 pages, not the alleged 556 pages mentioned in the "product details".
In my humble opinion, the best book ever written on the subject.

Rating: 5 stars
Summary: At Least It's Not Lisp!
Review: As has already been noted in other reviews, any discussion of programming languages is as prone to generating pointed, excited intercourse as a discussion of religion is. Those who think of a college education as preparation for a job have got it all wrong. It is preparation for life.

Your success in life will depend on your ability to learn for you will need to learn far more after college than you did during college. Those who think that computer science should be taught in "marketable" languages should note that computer languages come and go. Ask a COBOL programmer. Knowing how to construct software is more important than the language of implementation. My brother is a software architect for Microsoft and most of the people that are lucky enough to get an interview are hard pressed to write code to manipulate linked lists or trees let alone discuss these most fundamental data structures!

Computer scientists in academia do all of us out here in the real world a great disservice by foisting upon us this confusing melange of mathematics and software engineering. I find the two years devoted to learning calculus and differential equations more pertinent to mechanical and electrical engineering when logic, discrete mathematics, algorithm analysis, and automata theory, which are more appropriate to software engineering, get short shrift.

SICP is an excellent step in this direction and scheme is an excellent vehicle for discussing these concepts and more. Furthermore, these concepts can be developed with a lab-oriented, engineering approach. Contrary to the beliefs of some, any algorithm can be implemented in scheme. What sets scheme apart from other languages is that a scheme program can then be devised to analyze that algorithm giving a rigorous and concrete development of the analysis of algorithms!

When it comes to software engineering learning a computer language should be the most trivial of tasks. If you can't implement a software design in the language chosen, you will be without a job. This book is by far the best for learning scheme and the fundamentals of programming and it is already considered a classic. There are, however, less challenging ones such How To Design Programs and Simply Scheme. If you find learning scheme to be difficult then you should expect learning any computer language to be difficult. For those that think the language of the day is a route to a job you might find a shorter program at a community college more suitable. Community colleges are geared towards supplying people that meet the needs of the market today.


<< 1 2 3 4 .. 14 >>

© 2004, ReviewFocus or its affiliates