Learning a programming language, first of all, needs to increase the ability to solve problems, and mathematics increases the ability to solve problems. This book has three overarching themes: systematic problem solving, the power of abstraction, and computation as a way of thinking about the universe. When you finish the book:
- You have learned a programming language (Python) to express calculations.
- You have learned a systematic approach to organizing, writing and debugging programs.
- You have an understanding of computational complexity.
- You have the knowledge to transfer the problem statement to the calculation formula and problem solving method.
- You have learned a useful set of algorithms and problem reduction techniques.
- You have learned how to use randomization and simulation to solve problems that are not easily solved with closed-form solutions.
- You have learned how to use computational tools (including statistical tools, visualization and machine learning) to model and understand data.
Chapter 1: Getting started
Chapter 2: Introduction to Python
Chapter 3: Some simple numerical programs
Chapter 4: Functions, scope and abstraction
Chapter 5: Structured and mutable data types
Chapter 6: Recursive relations and global variables
Chapter 7: Modules and files
Chapter 8: Testing and Debugging
Chapter 9: Exceptions and Notices
Chapter 10: Classes and Object Oriented Programming
Chapter 11: Introduction to Algorithm Complexity
Chapter 12: Some simple algorithms and data structures
Chapter 13: Diagram and additional class concepts
Chapter 14: Knapsack and Graph Optimization Problems
Chapter 15: Dynamic Programming
Chapter 16: Random Stepping and Data Visualization
Chapter 17: Random Programs, Probability, and Distributions
Chapter 18: Monte Carlo simulation
Chapter 19: Sampling and Assurance
Chapter 20: Understanding Experimental Data
Chapter 21: Random tests and hypothesis testing
Chapter 22: Lies, damned lies and statistics
Chapter 23: Exploring Data with PANDAS
Chapter 24: A quick look at machine learning
Chapter 25: Clustering
Chapter 26: Classification methods