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**: 40,409

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)

No information is available for this author.

No information is available for this author.

No information is available for this author.

Book Categories

Computer Science
15
Introduction to Computer Science
33
Introduction to Computer Programming
52
Algorithms and Data Structures
24
Artificial Intelligence
24
Computer Vision
28
Machine Learning
6
Neural Networks
22
Game Development and Multimedia
25
Data Communication and Networks
5
Coding Theory
15
Computer Security
8
Information Security
35
Cryptography
3
Information Theory
17
Computer Organization and Architecture
22
Operating Systems
1
Image Processing
10
Parallel Computing
4
Concurrent Programming
19
Relational Database
3
Document-oriented Database
13
Data Mining
16
Big Data
17
Data Science
23
Digital Libraries
22
Compiler Design and Construction
25
Functional Programming
11
Logic Programming
26
Object Oriented Programming
21
Formal Methods
70
Software Engineering
3
Agile Software Development
7
Information Systems
5
Geographic Information System (GIS)

Mathematics
68
Mathematics
13
Algebra
28
Linear Algebra
3
Number Theory
8
Numerical Methods
2
Precalculus
10
Calculus
5
Category Theory
10
Proofs
19
Discrete Mathematics
24
Theory of Computation
14
Graph Theory
1
Complex Analysis
13
Probability
43
Statistics
7
Game Theory
5
Queueing Theory
13
Operations Research
16
Computer Aided Mathematics

Supporting Fields
19
Web Design and Development
1
Mobile App Design and Development
29
System Administration
2
Cloud Computing
9
Electric Circuits
6
Embedded System
26
Signal Processing
4
Network Science
3
Project Management

Operating System
Programming/Scripting
6
Ada
13
Assembly
34
C / C++
8
Common Lisp
2
Forth
36
Java
12
JavaScript
1
Lua
15
Microsoft .NET
1
Rexx
12
Perl
6
PHP
66
Python
12
R
1
Rebol
13
Ruby
2
Scheme
3
Tcl/Tk

Miscellaneous