About the Book
This book prepares students for the
world of computing by giving them a solid foundation in the "science" of
computer science - algorithms. By taking an algorithm-based approach to
the subject, this new book helps readers grasp overall concepts, rather
than getting them bogged down with specific syntax details of a programming
language that can become obsolete quickly. By working with algorithms from
the start and applying the concepts to the real world, students will understand
the power of computers as problem solving tools and learn to think like
programmers.
Features
-
Helps readers grasp overall concepts, rather
than getting bogged down with specific syntax details of a programming
language that can become obsolete quickly.
-
Contains many interesting motivational sidebars
throughout the text-such as "Food for Thought" sections and boxed definitions-which
apply the concepts to the real world and enhance student learning.
-
Covers a wide scope of topics, giving professors
freedom and flexibility in choosing which areas to cover in their course.
Related
Books
Computer Fluency, Literacy & Introduction
to Computer Science (Computer
Science)
Table of Contents
I. THE COMPUTING PERSPECTIVE.
Technology, Science and Culture.
What is Technology.
Technology and Human Evolution.
Paradigmatic Change.
The Age of Tribal Consciousness.
Abstract Media Technology.
The Age of Absolute Abstraction.
Mechanical Media Technology.
The Age of Mechanistic Thinking.
Electronic Media Technology.
Hallmarks of a Paradigm Shift.
Essential Features of the Emerging
Paradigm.
The Central Theme of the New Paradigm.
The Algorithmic Model.
Introduction.
Flow Charts.
Properties of Algorithms.
Algorithms.
Components.
Seeing Things from the Computing Perspective.
Summary.
II. THE ALGORITHM TOOLKIT.
Basic Data, Operations, and Decisions.
Atomic Data.
Operators.
Data Types and Declarations.
Conditions and Decisions.
Summary.
Tools for “Procedural Abstraction.”
Why modularity?
Two Kinds of Modules.
The Scope of Data.
Parameters.
The Importance of Procedural Abstraction.
Documenting Modules.
Recursive Control.
Using a stack to Trace Recursion.
Summary.
Tools for “Data Abstraction.”
Records.
The Difference Between Types and Variables.
Anonymous Data Types.
Dynamic Data Structures.
Linked Lists.
The Scope of Linked Data.
Binary Trees.
Graphs.
Iterative Control.
Iteration vs. Recursion.
Arrays.
The Abstraction Power of Constants.
The “Data Abstraction” Power of Creating
New Data Types.
Summary.
Graphical Data Notation.
Algorithmic Methods.
Searches and Traversals.
Divide and Conquer.
Optimization Algorithms.
Summary.
Tools for Estimating Cost and Complexity.
Measures of Performance.
Analysis of work done.
Performance and Data Structures.
Reasonable vs. Unreasonable Algorithms.
Summary.
Tools for Verifying Correctness.
Bugs and Debugging.
Ambiguity.
Language errors.
Logic errors.
Proving correctness.
Verification.
Summary.
Tools for “Behavioral Abstraction.”
The “Object-Oriented” Paradigm.
The Benefits of the OO Approach.
Achieving Superior Encapsulation.
Achieving Superior Reusability.
Achieving Superior Adaptability.
Achieving Polymorphism.
Everything is an Object.
Summary.
III. THE LIMITS OF COMPUTING.
Concurrency and Parallelism.
Overview: Concurrency vs. Parallelism.
Concurrency.
Issues in Concurrency.
Parallelism.
Summary.
Hierarchies of Complexity.
The Complexity of Problems.
Tractable vs. Intractable Problems.
“NP-Complete” Problems.
Oracles and Determinism.
NP-Complete vs. Intractable Problems.
Undecidability.
Summary |