Concrete Abstractions - An Introduction to Computer Science Using Scheme

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.

**Tag(s):**
Introduction to Computer Science

**Publication date**: 31 Dec 1999

**ISBN-10**:
0534952119

**ISBN-13**:
n/a

**Paperback**:
686 pages

**Views**: 41,681

Concrete Abstractions - An Introduction to Computer Science Using Scheme

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.

Terms and Conditions:

Book excerpts:

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.

Reviews:

Amazon.com

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.

Book excerpts:

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.

Reviews:

Amazon.com

:) "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."

Tweet

About The Author(s)

Max Hailperin received Gustavus's Edgar M. Carlson Award for Distinguished Teaching in 2002. He has also published journal articles on aspects of computer program optimization by compilers, as well as conference presentations on computer science education. He has served as a consultant and volunteer lobbyist regarding technology-related aspects of election law. His research interests are public policies concerning information technology.

No information is available for this author.

No information is available for this author.

Book Categories

Computer Science
Introduction to Computer Science
Introduction to Computer Programming
Algorithms and Data Structures
Artificial Intelligence
Computer Vision
Machine Learning
Neural Networks
Game Development and Multimedia
Data Communication and Networks
Coding Theory
Computer Security
Information Security
Cryptography
Information Theory
Computer Organization and Architecture
Operating Systems
Image Processing
Parallel Computing
Concurrent Programming
Relational Database
Document-oriented Database
Data Mining
Big Data
Data Science
Digital Libraries
Compiler Design and Construction
Functional Programming
Logic Programming
Object Oriented Programming
Formal Methods
Software Engineering
Agile Software Development
Information Systems
Geographic Information System (GIS)

Mathematics
Mathematics
Algebra
Abstract Algebra
Linear Algebra
Number Theory
Numerical Methods
Precalculus
Calculus
Differential Equations
Category Theory
Proofs
Discrete Mathematics
Theory of Computation
Graph Theory
Real Analysis
Complex Analysis
Probability
Statistics
Game Theory
Queueing Theory
Operations Research
Computer Aided Mathematics

Supporting Fields
Web Design and Development
Mobile App Design and Development
System Administration
Cloud Computing
Electric Circuits
Embedded System
Signal Processing
Integration and Automation
Network Science
Project Management

Operating System
Programming/Scripting
Ada
Assembly
C / C++
Common Lisp
Forth
Java
JavaScript
Lua
Microsoft .NET
Rexx
Perl
PHP
Python
R
Rebol
Ruby
Scheme
Tcl/Tk

Miscellaneous