
Discovering Computer Science
Interdisciplinary Problems, Principles, and Python Programming
Jessen Havill(Author)
Apple Academic Press Inc.
1st Edition
Published on 25. August 2015
Book
Paperback/Softback
750 pages
978-1-4822-5414-3 (ISBN)
Article exhausted; check for reprint
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.
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 / Votes
"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
More details
Series
Language
English
Place of publication
Oakville
Canada
Target group
College/higher education
Students in CS1 courses; science students from other majors who are interested in learning CS concepts.
Illustrations
N/A, 242 farbige Abbildungen, 86 farbige Tabellen
N/A; 86 Tables, color; 242 Illustrations, color
Dimensions
Height: 254 mm
Width: 178 mm
Weight
1588 gr
ISBN-13
978-1-4822-5414-3 (9781482254143)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Other editions
New editions

Jessen Havill
Discovering Computer Science
Interdisciplinary Problems, Principles, and Python Programming
Book
10/2020
2nd Edition
Chapman & Hall/CRC
€159.30
Shipment within 15-20 days
Person
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.
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.
Content
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
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