Оглавление
Konrad Hinsen. Computation in Science (Second Edition)
Contents
Preface
Acknowledgements
Author biography
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 1. What is computation?
1.1 Defining computation. 1.1.1 Numerical computation
1.1.2 From numbers to symbols
1.1.3 Non-numerical computation
1.2 The roles of computation in scientific research. Computation as a tool
Computation for understanding
Computation as a form of scientific knowledge
Computation as a model for information processing in nature
1.3 Analog computing
1.4 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 2. Computation in science
2.1 Traditional science: celestial mechanics
2.1.1 Empirical models for planetary orbits
2.1.2 Newton’s physical model
2.2 Scientific models and computation
2.2.1 Characterizing models by computational effort
2.2.2 Empirical models: from linear regression to data science
2.2.3 Explanatory models: from simple to complex systems
2.2.4 Measuring the complexity of a model
2.2.5 Getting rid of the equations
2.3 Computation at the interface between observations and models
2.3.1 Matching models and measurements
2.3.2 Mixing models and measurements
2.4 Computation for developing insight
2.5 The impact of computing on science
2.6 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 3. Formalizing computation
3.1 From manual computation to rewriting rules
3.2 From computing machines to automata theory
3.3 Computability
3.4 Restricted models of computation
3.5 Computational complexity
3.6 Computing with numbers
3.6.1 Floating-point numbers
3.6.2 Rational numbers
3.6.3 Computable numbers
3.7 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 4. Automating computation
4.1 Computer architectures
4.1.1 Processors and working memory
4.1.2 Processor instruction sets
4.1.3 Special-purpose processors
4.1.4 Parallel computers
4.2 Programming languages
4.2.1 Design choices
Performance versus clarity and convenience
Verifiability versus simplicity
Computing results versus developing software tools
Generality versus adequacy for a specific purpose
Standardization versus individualism
4.2.2 Social and psychological aspects
4.3 Observing program execution
4.3.1 Debuggers: watching execution unfold
4.3.2 Profilers: measuring execution time
4.4 Software engineering
4.5 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 5. Taming complexity
5.1 Chaos and complexity in computation
5.2 Verification, validation, and testing
5.2.1 Verification versus validation
5.2.2 Independent repetition
5.2.3 Testing
5.2.4 Redundancy
5.2.5 Proving the correctness of software
5.2.6 The pitfalls of numerical computation
5.3 Abstraction
5.3.1 Program abstractions
5.3.2 Data abstractions
5.3.3 Object-oriented programming
5.3.4 The cost of abstraction
5.4 Managing state
5.4.1 Identifying state in a program
5.4.2 Stateless computing
5.4.3 State protection
5.5 Incidental complexity and technical debt
5.6 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 6. Computational reproducibility
6.1 Reproducibility: a core value of science
6.2 Repeating, reproducing, replicating
6.3 The role of computation in the reproducibility crisis
6.4 Non-reproducible determinism
6.5 Staged computation
6.5.1 Preserving compiled code
6.5.2 Reproducible builds
6.5.3 Preserving or rebuilding?
6.6 Replicability, robustness, and reuse
6.7 Managing software evolution
6.8 Best practices for reproducible and replicable computational science
6.9 Further reading
References
IOP Publishing. Computation in Science (Second Edition) From concepts to practice. Konrad Hinsen. Chapter 7. Outlook: scientific knowledge in the digital age
7.1 The scientific record goes digital
7.2 Procedural knowledge turns into software
7.3 Machine learning: the fusion of factual and procedural knowledge
7.4 The time scales of scientific progress and computing
7.5 The industrialization of science
7.6 Preparing the future
7.7 Further reading
References