1st Edition
Computational Thinking for the Modern Problem Solver
Through examples and analogies, Computational Thinking for the Modern Problem Solver introduces computational thinking as part of an introductory computing course and shows how computer science concepts are applicable to other fields. It keeps the material accessible and relevant to noncomputer science majors.
With numerous color figures, this classroom-tested book focuses on both foundational computer science concepts and engineering topics. It covers abstraction, algorithms, logic, graph theory, social issues of software, and numeric modeling as well as execution control, problem-solving strategies, testing, and data encoding and organizing. The text also discusses fundamental concepts of programming, including variables and assignment, sequential execution, selection, repetition, control abstraction, data organization, and concurrency. The authors present the algorithms using language-independent notation.
What Is Computational Thinking?
Computers, Computers Everywhere
Computer, Computer Science, and Computational Thinking
From Abacus to Machine
The First Software
What Makes It a Modern Computer?
The First Modern Computer
Moore’s Law
Summary
When Will You Ever Use This Stuff?
How Real-World Information Becomes Computable Data
Information and Data
Converting Information into Data
Data Capacity
Data Compression
Summary
Logic
What Is Logic?
Boolean Logic
Applications of Propositional Logic
Solving Problems
Problem Definition
Logical Reasoning
Decomposition: Software Design
Decomposition: Other Uses
Abstraction: Class Diagrams
Abstraction: Use Case Diagrams
Summary
When Will You Ever Use This Stuff?
Algorithmic Thinking
Algorithms
Software and Programming Languages
Actions
Modeling Solutions
Activity Diagrams
Selection in Activity Diagrams
Repetition in Activity Diagrams
Control Abstraction in Activity Diagrams
States and State Diagrams
Including Behavior in State Diagrams
Providing More Detail in State Diagrams
Summary
When Will I Ever Use This Stuff?
Data Organization
Names
Lists
Graphs
Hierarchies
Algorithmic Thinking
Von Neumann Architecture
Spreadsheets
Text Processing
Patterns
Let’s Get It Correct
"Computer Errors" Usually Aren’t
Software Correctness
Verification
Software Testing
White Box Testing
Black Box Testing with Equivalence Partitioning
Boundary Value Analysis
When Will You Ever Use This Stuff?
Limits of Computation
How Is Capacity Measured in Computers?
An Estimate of the Physic al Limitations
Benchmarks
Counting the Performance
Impractical Algorithms
Impossible Algorithms
Metaphysical Limitations
When Will You Ever Use This Stuff?
Concurrent Activity
Parallelism or Concurrency?
Scheduling
Sorting Networks
Measuring Concurrency’s Effect
Challenges of Concurrency
When Will You Ever Use This Stuff?
Information Security
What Is Security?
Foundations
Common Forms of Cybercrime
How to Secure? Step 1: Authenticate
How to Secure? Step 2: Authorization
All a Matter of Risk
A Few Good Ideas
Good Strategies
When Will You Ever Use This Stuff?
Index
References, Terminology, and Exercises appear at the end of each chapter.
Biography
Riley, David; Hunt, Kenny A.