Software-Carpentry-Inspired Book: Released and On Sale!
What's On It?
The creature on the cover is the adorable and fascinating Bobtail Squid.
The Cover
In addition to being adorned by the bobtail squid, the book is emblazoned with the kind words of two of our mentors. First and foremost, upon handling the book, the reader will encounter a quotation from Fernando Perez on the back cover. Additionally, the first few pages contain a foreword by Greg Wilson. Anthony and I are humbled and proud to have the kind support of these two extraordinary individuals, without whom this book could not have existed. To read what they said, you'll have to get your hands on a book. All I'll say here is that both were kinder than we could have dreamed.
What's In It?
Since different scientists struggle in different ways at each stage of the research game, we wanted to cover the whole playbook of scientific computing best practices. Thus, we formed this book around the idea of a soup-to-nuts, idea-to-publication scientific research workflow, split into four parts:
- Getting Started
- Getting It Done
- Getting It Right
- Getting It Out There
Getting Started
Software Carpentry instructors, students, and community members will recognize the motivation to introduce basic features of the bash shell and Python before diving in. That's exactly what we do in this book as well, preparing the reader for some computational thinking using plenty of examples and exercises.
- Chapter 1 - Introduction to the Command Line
- Chapter 2 - Programming Blast Off with Python
- Chapter 3 - Essential Containers
- Chapter 4 - Flow Control and Logic
- Chapter 5 - Operating with Functions
- Chapter 6 - Classes and Objects
Getting it Done
Equipped with the basic concepts, the reader is now ready to build the software. This part focuses on the details of handling and analyzing data, key data structures, data storage, parallelization, and package deployment. We think of these skills as core to the generation of software in the physical sciences, so readers from other scientific disciplines may not find this part of the book as relevant to their work as the other parts.
- Chapter 7 - Analysis and Visualization
- Chapter 8 - Regular Expressions
- Chapter 9 - NumPy: Thinking in Arrays
- Chapter 10 - Storing Data: Files and HDF5
- Chapter 11 - Important Data Structures in Physics
- Chapter 12 - Performing in Parallel
- Chapter 13 - Deploying Software
Getting It Right
In this part of the book, notions of reproducibility and defensive programming reign. These chapters make the case and provide a foundation for producing automated, version controlled, verified, and validated software.
- Chapter 14 - Building Software Pipelines
- Chapter 15 - Local Version Control
- Chapter 16 - Remote Version Control
- Chapter 17 - Debugging
- Chapter 18 - Testing
Getting It Out There
Of course, science unshared is not science. Thus, we share tools for automating documentation and publication and have chapters focused on the people-related issues encountered in collaborative, open-source work.
- Chapter 19 - Documentation
- Chapter 20 - Publication
- Chapter 21 - Collaboration
- Chapter 22 - Licenses, Ownership, and Copyright
- Chapter 23 - Further Musings on Computational Physics
Where To Get It
The book can be acquired in many ways. Through Safari Books Online, O'Reilly books are free for K-12 students. But, don't worry - even if high school is long past, you can still get a discount until July 17th using the discount code: WKPYDP on the O'Reilly website. The book can also be found on Amazon and in many other places where books are lent or sold. We hope you enjoy it and that you'll post a review or tweet us @physics_codes if you like it!