- Shopping Bag ( 0 items )
What Is Computer Science?
In some respects, computer science is a new discipline; it has grown and evolved along with the growth of computing technology and the cheaper, faster, and more accessible processing power of modem-day computers. As recently as 1970, many colleges and universities did not even have departments of computer science. But computer science has benefited from work done in such older disciplines as mathematics, psychology, electrical engineering, physics, and linguistics. Computer science inherits characteristics from all these fields in ways that we'll touch on in this book, but the thread that links these and the many subdisciplines of computer science is computer programming.
Some people prefer the term used in many European languages, informatics, over what is called computer science in the United States. Computer science is more the study of managing and processing information than it is the study of computers. Computer science is more than programming, but programming is at the core of information processing and computer science.
This book will guide you through the study of the design, building, and analysis of computer programs. Although you won't become an expert by working through this book, you will lay a foundation on which expertise can be built. Wherever possible, the programming examples will solve problems that are difficult to solve without a computer: a program might find the smallest of 10,000 numbers, rather than the smallest of 2 numbers. Longer examples are taken from various core areas of computer science. As this is a book about the design and analysis of computer programs, it must be used in conjunction with a computer. Reading alone cannot convey the same understanding that using, reading, and writing programs can.
The Tapestry of Computer Science
This chapter introduces computer science using a tapestry metaphor. A tapestry has much in common with computer science. A tapestry has many intricate scenes that form a whole. Similarly, computer science is a broad discipline with many intricate subdisciplines. In studying a tapestry, we can step back and view the work as a whole, move closer to concentrate on some particularly alluring or colorful region, and even study the quality of the fabric itself. We'll similarly explore computer science-studying some things in detail, but stepping back to view the whole when appropriate. We'll view programs as tapestries too. You'll study programs written by others, add to these programs to make them more useful, and write your own programs. You'll see that creating and developing programs is not only useful but is immensely satisfying, and often entertaining as well.
Several unifying threads run through a tapestry, and the various scenes and sections originate from and build on these threads. Likewise in computer science, we find basic themes and concepts on which the field is built and that we use to write programs and solve problems. In this chapter we introduce the themes of computer science, which are like the scenes in a tapestry, and the concepts, which are like the unifying threads.
Contexture is a word meaning both "an arrangement of interconnected parts" and "the act of weaving (assembling) parts into a whole." It can apply to tapestries and to computer programming. This book uses a contextural approach in which programming is the vehicle for learning about computer science. Although it is possible to study computer science without programming, it would be like studying food and cooking without eating, which would be neither as enjoyable nor as satisfying.
Computer science is not just programming. Too often this is the impression left after an initial exposure to the field. I want you to learn something of what a well-read and well-rounded computer scientist knows. You should have an understanding of what has been done, what might be done, and what cannot be done by programming a computer. After a brief preview of what is ahead, we'll get to it.
To develop an initial understanding of the themes and concepts that make up the computer science tapestry, we'll work through an example. Consider two similar tasks of arranging objects into some predetermined order:
Card players often do the first task because it makes playing much simpler than if the cards in their hands are arranged in a random order. The second task is part of the administration of the Advanced Placement exams given each year to high school students. Many people are hired to sort the exam booklets by student ID number before the scores are entered into a computer. In both cases people are doing the arranging. The differences in the scale of the tasks and the techniques used to solve them will illuminate the study of computer science and problem solving.
Arranging 13 Cards
Most people arrange cards in order by suits (spades, hearts, diamonds, and clubs), and within suit by rank (2, ..., 10, J, Q, K, A) with little thought. In fact, many people perform a slightly different sequence of steps in arranging different hands of cards, modifying their basic technique depending on the order in which the cards are dealt. However, if you are asked to describe the process of arranging a hand of cards to someone who has never seen cards before, the task becomes difficult. The careful description of such processes is one of the fundamental parts of computer science. The descriptions are called algorithms and are the focus of much study in computer science and in this book.
The algorithm for sorting cards shown in Figure 1. 1 is both correct and concise, two traits to strive for in writing algorithms. The instructions to sort a group are applicable to all groups, not just to the spades or to the diamonds. Instructions that apply in more than one situation are much more versatile than instructions that apply in a single situation...
|1||Computer Science and Programming||1|
|2||C++ Programs: Form and Function||29|
|3||C++ Programs: Input/Process/Output||81|
|4||Building Programs and Solving Problems||111|
|5||Iteration with Programs and Classes||175|
|6||Sequential Access: Streams and Iterators||255|
|7||Class Design and Implementation via Simulation||309|
|8||Arrays, Data, and Random Access||359|
|9||Characters, Strings, and Streams: Abstraction and Information Hiding||427|
|10||Recursion, Scope, and Lifetime||485|
|11||Sorting, Algorithms, and Matrices||527|
|12||Information Hiding and Dynamic Data||575|
|App. A||Class Declarations and Implementations||653|
Posted January 4, 2001
The author is clearly a scholar and is able to write a highly useful computer science text by avoiding the mind-numbing boredom that plagues all the others of its kind. The approach to teaching computer science is as unique as Dr. Astrachan's writing style. As an experienced C++ programmer, I thoroughly enjoyed the book and recommend it without reservation.Was this review helpful? Yes NoThank you for your feedback. Report this reviewThank you, this review has been flagged.
Posted December 9, 2000
I am a professor from MIT, I normally check up on the books available for teaching C++;I came across this book and decided to read it. This book is very unorganized. It has no clear structure and the explanations are vague. I would not recommend this book to anyone serious about learning C++. You will have to use another book in order to fully comprehend this book.Was this review helpful? Yes NoThank you for your feedback. Report this reviewThank you, this review has been flagged.
Posted November 5, 2000
I teach an AP CS class and the math chair ordered this book. It is the most useless computer science book I have ever used. None of his examples are assembled in a cogent, useful fashion. The author opines that it is better to teach computer science than C++, but this leaves the begining programmer with no way to express what they are learning with code. I told my students to use the book for kindling. We went with a more unorthadox approach and ordered an ORA book which the students love.Was this review helpful? Yes NoThank you for your feedback. Report this reviewThank you, this review has been flagged.