Читать книгу Computation in Science (Second Edition) - Konrad Hinsen - Страница 4

Contents

Оглавление

Preface

Acknowledgements

Author biography

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

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

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

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

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

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

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

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

Computation in Science (Second Edition)

Подняться наверх