Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming, 1st Edition (Pack - Book and Ebook) book cover

Discovering Computer Science

Interdisciplinary Problems, Principles, and Python Programming, 1st Edition

By Jessen Havill

Chapman and Hall/CRC

750 pages | 242 Color Illus.

Purchasing Options:$ = USD
Pack - Book and Ebook: 9781482254143
pub: 2015-07-10
SAVE ~$19.20
$96.00
$76.80
x
eBook (VitalSource) : 9781498786744
pub: 2016-06-21
from $44.98


FREE Standard Shipping!

Description

Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming introduces computational problem solving as a vehicle of discovery in a wide variety of disciplines. With a principles-oriented introduction to computational thinking, the text provides a broader and deeper introduction to computer science than typical introductory programming books.

Organized around interdisciplinary problem domains, rather than programming language features, each chapter guides students through increasingly sophisticated algorithmic and programming techniques. The author uses a spiral approach to introduce Python language features in increasingly complex contexts as the book progresses.

The text places programming in the context of fundamental computer science principles, such as abstraction, efficiency, and algorithmic techniques, and offers overviews of fundamental topics that are traditionally put off until later courses.

The book includes thirty well-developed independent projects that encourage students to explore questions across disciplinary boundaries. Each is motivated by a problem that students can investigate by developing algorithms and implementing them as Python programs.

The book's accompanying website — http://discoverCS.denison.edu — includes sample code and data files, pointers for further exploration, errata, and links to Python language references.

Containing over 600 homework exercises and over 300 integrated reflection questions, this textbook is appropriate for a first computer science course for computer science majors, an introductory scientific computing course or, at a slower pace, any introductory computer science course.

Reviews

"Havill’s book introduces computer science in a very unique and effective way. The book discusses fundamental computer science concepts such as abstraction, repetition, condition, and recursion through real-world problems such as personal finance, population growth, DNA sequence, and earthquake analysis. The book is designed for a CS 1 course for majors, a CS 0 course for nonmajors with omissions, or a basic computing course for natural or social sciences students. Traditional introductory computer science content is well covered, though in a different way compared to most other introductory books. Most other introductory CS books would arrange the topics either around features of programming such as objects, variables, repetitions, conditions, and functions, or around data structures or algorithms such as list, array, graph, search, and sorting. Havill’s book presents readers with the same content using topics of real-world problems as a road map. … For each problem studied, the author provides ample details in fine language so students can follow the discussions easily. Plenty of "Reflections" are presented throughout the discussions that inspire students to think deeper and synthesize what they just learned. … The book is best suited for computer science majors, or students from natural sciences or social sciences. It requires a certain level of maturity with mathematics. With careful choices of omission by the instructor, students of other majors can definitely benefit from the book as well, as the author points out in the preface."

ACM Computing Reviews, February 3, 2016

Table of Contents

What is Computation?

Problems and Abstraction

Algorithms and Programs

Efficient Algorithms

Computers Are Dumb

Summary

Further Discovery

Elementary Computations

Welcome to the Circus

Arithmetic

What’s In a Name?

Using Functions

Binary Arithmetic

Summary

Further Discovery

Visualizing Abstraction

Data Abstraction

Visualization with Turtles

Functional Abstraction

Programming in Style

A Return to Functions

Scope and Namespaces

Summary

Further Discovery

Growth and Decay

Discrete Models

Visualizing Population Changes

Conditional Iteration

Continuous Models

Numerical Analysis

Summing Up

Further Discovery

Projects

Forks in the Road

Random Walks

Pseudorandom Number Generators

Simulating Probability Distributions

Back to Booleans

A Guessing Game

Summary

Further Discovery

Projects

Text, Documents, and DNA

Counting words

Text Documents

Encoding Strings

Lineartime Algorithms

Analyzing Text

Comparing Texts

Genomics

Summary

Further Discovery

Projects

Designing Programs

How to Solve It

Design by Contract

Testing

Summary

Further Discovery

Data Analysis

Summarizing Data

Creating and Modifying Lists

Frequencies, Modes, and Histograms

Reading Tabular Data

Designing Efficient Algorithms

Linear Regression

Data Clustering

Summary

Further Discovery

Projects

Flatland

Two-Dimensional Data

The Game of Life

Digital Images

Summary

Further Discovery

Projects

Self-Similarity and Recursion

Fractals

Recursion and Iteration

The Mythical Tower of Hanoi

Recursive Linear Search

Divide and Conquer

Lindenmayer Systems

Summary

Further Discovery

Projects

Organizing Data

Binary Search

Selection Sort

Insertion Sort

Efficient Sorting

Tractable and Intractable Algorithms

Summary

Further Discovery

Projects

Networks

Modeling with Graphs

Shortest Paths

It’s A Small World

Random Graphs

Summary

Further Discovery

Projects

Abstract Data Types

Designing Classes

Operators and Special Methods

Modules

A Flocking Simulation

A Stack ADT

A Dictionary ADT

Summary

Further Discovery

Projects

Appendix A: Installing Python

An Integrated Distribution

Manual Installation

Appendix B: Python Library Reference

Math Module

Turtle Methods

Screen Methods

Matplotlib.Pyplot Module

Random Module

String Methods

List Methods

Image Module

Special Methods

Bibliography

Index

About the Author

Jessen Havill is a professor of computer science and the Benjamin Barney Chair of Mathematics at Denison University, where he has been on the faculty since 1998. Dr. Havill teaches courses across the computer science curriculum, as well as an interdisciplinary elective in computational biology. He was awarded the college's highest teaching honor, the Charles A. Brickman Teaching Excellence Award, in 2013.

Dr. Havill is also an active researcher, with a primary interest in the development and analysis of online algorithms. In addition, he has collaborated with colleagues in biology and geosciences to develop computational tools to support research and teaching in those fields. Dr. Havill earned his bachelor's degree from Bucknell University and his Ph.D. in computer science from The College of William and Mary.

About the Series

Chapman & Hall/CRC Textbooks in Computing

Learn more…

Subject Categories

BISAC Subject Codes/Headings:
COM051010
COMPUTERS / Programming Languages / General
MAT000000
MATHEMATICS / General
MAT004000
MATHEMATICS / Arithmetic