Books & Videos

Table of Contents

  1. Getting Started

    1. Chapter 1 Introduction to the Command Line

      1. Navigating the Shell
      2. Manipulating Files and Directories
      3. Getting Help
      4. Permissions and Sharing
      5. The Environment
      6. Scripting with Bash
      7. Command Line Wrap-up
    2. Chapter 2 Programming Blastoff with Python

      1. Running Python
      2. Comments
      3. Variables
      4. Special Variables
      5. Operators
      6. Strings
      7. Modules
      8. Python Wrap-up
    3. Chapter 3 Essential Containers

      1. Lists
      2. Tuples
      3. Sets
      4. Dictionaries
      5. Containers Wrap-up
    4. Chapter 4 Flow Control and Logic

      1. Conditionals
      2. Exceptions
      3. Loops
      4. Flow Control and Logic Wrap-up
    5. Chapter 5 Operating with Functions

      1. Functions in Python
      2. Keyword Arguments
      3. Variable Number of Arguments
      4. Multiple Return Values
      5. Scope
      6. Recursion
      7. Lambdas
      8. Generators
      9. Decorators
      10. Function Wrap-up
    6. Chapter 6 Classes and Objects

      1. Object Orientation
      2. Objects
      3. Classes
      4. Decorators and Metaclasses
      5. Object Orientation Wrap-up
  2. Getting It Done

    1. Chapter 7 Analysis and Visualization

      1. Preparing Data
      2. Loading Data
      3. Cleaning and Munging Data
      4. Analysis
      5. Visualization
      6. Analysis and Visualization Wrap-up
    2. Chapter 8 Regular Expressions

      1. Messy Magnetism
      2. Metacharacters on the Command Line
      3. grep, sed, and awk
      4. Finding Patterns in Files (grep)
      5. Finding and Replacing Patterns in Files (sed)
      6. Manipulating Columns of Data (awk)
      7. Python Regular Expressions
      8. Regular Expressions Wrap-up
    3. Chapter 9 NumPy: Thinking in Arrays

      1. Arrays
      2. dtypes
      3. Slicing and Views
      4. Arithmetic and Broadcasting
      5. Fancy Indexing
      6. Masking
      7. Structured Arrays
      8. Universal Functions
      9. Other Valuable Functions
      10. NumPy Wrap-up
    4. Chapter 10 Storing Data: Files and HDF5

      1. Files in Python
      2. An Aside About Computer Architecture
      3. Big Ideas in HDF5
      4. File Manipulations
      5. Hierarchy Layout
      6. Chunking
      7. In-Core and Out-of-Core Operations
      8. Querying
      9. Compression
      10. HDF5 Utilities
      11. Storing Data Wrap-up
    5. Chapter 11 Important Data Structures in Physics

      1. Hash Tables
      2. Data Frames
      3. B-Trees
      4. K-D Trees
      5. Data Structures Wrap-up
    6. Chapter 12 Performing in Parallel

      1. Scale and Scalability
      2. Problem Classification
      3. Example: N-Body Problem
      4. No Parallelism
      5. Threads
      6. Multiprocessing
      7. MPI
      8. Parallelism Wrap-up
    7. Chapter 13 Deploying Software

      1. Deploying the Software Itself
      2. Deploying to the Cloud
      3. Deploying to Supercomputers
      4. Deployment Wrap-up
  3. Getting It Right

    1. Chapter 14 Building Pipelines and Software

      1. make
      2. Building and Installing Software
      3. Installation
      4. Building Software and Pipelines Wrap-up
    2. Chapter 15 Local Version Control

      1. What Is Version Control?
      2. Getting Started with Git
      3. Local Version Control with Git
      4. Version Conrol Wrap-Up
    3. Chapter 16 Remote Version Control

      1. Repository Hosting (github.com)
      2. Creating a Repository on GitHub
      3. Declaring a Remote (git remote)
      4. Sending Commits to Remote Repositories (git push)
      5. Downloading a Repository (git clone)
      6. Fetching the Contents of a Remote (git fetch)
      7. Merging the Contents of a Remote (git merge)
      8. Pull = Fetch and Merge (git pull)
      9. Conflicts
      10. Resolving Conflicts
      11. Remote Version Control Wrap-up
    4. Chapter 17 Debugging

      1. Encountering a Bug
      2. Print Statements
      3. Interactive Debugging
      4. Debugging in Python (pdb)
      5. Profiling
      6. Linting
      7. Debugging Wrap-up
    5. Chapter 18 Testing

      1. Why Do We Test?
      2. When Should We Test?
      3. Where Should We Write Tests?
      4. What and How to Test?
      5. Running Tests
      6. Edge Cases
      7. Unit Tests
      8. Integration Tests
      9. Regression Tests
      10. Test Generators
      11. Test Coverage
      12. Test-Driven Development
      13. Testing Wrap-up
  4. Getting It Out There

    1. Chapter 19 Documentation

      1. Why Prioritize Documentation?
      2. Types of Documentation
      3. Automation
      4. Documentation Wrap-up
    2. Chapter 20 Publication

      1. Document Processing
      2. Text Editors
      3. Markup Languages
      4. Publication Wrap-up
    3. Chapter 21 Collaboration

      1. Ticketing Systems
      2. Pull Requests and Code Reviews
      3. Collaboration Wrap-up
    4. Chapter 22 Licenses, Ownership, and Copyright

      1. What Is Copyrightable?
      2. Right of First Publication
      3. What Is the Public Domain?
      4. Choosing a Software License
      5. Berkeley Software Distribution (BSD) License
      6. GNU General Public License (GPL)
      7. Creative Commons (CC)
      8. Other Licenses
      9. Changing the License
      10. Copyright Is Not Everything
      11. Licensing Wrap-up
    5. Chapter 23 Further Musings on Computational Physics

      1. Where to Go from Here