Terms and Conditions:
Max Hailperin wrote:The PDF files for Concrete Abstractions: An Introduction to Computer Science Using Scheme are made available for your personal educational use. For your own use, you may make a copy in any form. However, you must not pass any copy on to anyone else, and you must not place any copy on a server for others to download.
At first glance, the title of this book is an oxymoron. After all, the term abstraction
refers to an idea or general description, divorced from physical objects. On the other hand, something is concrete
when it is a particular object, perhaps something that we can manipulate with our hands and look at with our eyes. Yet we often deal with concrete abstractions
, and so this book will introduce several abstract ideas in as concrete a way as possible. As the reader become familiar and comfortable with these ideas, they will begin to think of the abstractions as actual concrete objects. It is this way of thinking, that makes computer science can be referred as the discipline of concrete abstractions
This book offers the students a hands-on, abstraction-based experience of thinking like a computer scientist. It covers the basics of programming and data structures, and gives first-time computer science students the opportunity to not only write programs, but to prove theorems and analyze algorithms as well. Students learn a variety of programming styles, including functional programming, assembly-language programming, and object-oriented programming (OOP). While most of the book uses the Scheme programming language, Java is introduced at the end as a second example of an OOP system and to demonstrate concepts of concurrent programming.
Intended Audience :
This book is primarily intended as the text for a first undergraduate course in computer science. The ideal is that every college student should have a trial experience of what it's like to think abstractly, the way mathematicians and computer scientists think. The tangible nature of the computer scientist's abstractions should attract some of the students who choose to avoid math courses. Because of this, this book doesn't require that the students have taken a college-level math course. On the other hand, mathematics is used in computer science in much the same way it is used in biology, chemistry, and physics. Thus a knowledge of high school algebra is assumed.
Similarly, this book also assume that the reader may not have had much computing or programming experience, beyond playing an occasional computer game or using a word processor. However, this book does not describe how to start a computer, how to use a Scheme programming environment, or similar mechanics. This kind of information varies greatly from machine to machine and is best taught by a person rather than a book.
:) "The book starts in Scheme, then adds object oriented techniques and assembly language. It finishes with a transition to Java, which is, of course, similar to C++. This approach will provide a much broader background than a typical text using C++ or C could."
:) "Concrete Abstractions provides a great intoduction to the world of Computer Science. It covers well basic ideas of abstractions, software design, algorithms, sorting, and much more."