ABSTRACT

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 — https://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.

chapter 1|30 pages

What is computation?

chapter 2|34 pages

Elementary computations

chapter 3|48 pages

Visualizing abstraction

chapter 4|72 pages

Growth and decay

chapter 5|56 pages

Forks in the road

chapter 6|80 pages

Text, documents, and DNA

chapter 7|30 pages

Designing programs

chapter 8|92 pages

Data analysis

chapter 9|34 pages

Flatland

chapter 10|64 pages

Self-similarity and recursion

chapter 11|46 pages

Organizing data

chapter 12|34 pages

Networks

chapter 13|76 pages

Abstract data types