Our systems are now restored following recent technical disruption, and we’re working hard to catch up on publishing. We apologise for the inconvenience caused. Find out more

Recommended product

Popular links

Popular links


Writing Scientific Software

Writing Scientific Software

Writing Scientific Software

A Guide to Good Style
Suely Oliveira, University of Iowa
David E. Stewart, University of Iowa
September 2006
Available
Paperback
9780521675956
$68.99
USD
Paperback
USD
eBook

    The core of scientific computing is designing, writing, testing, debugging and modifying numerical software for application to a vast range of areas: from graphics, meteorology and chemistry to engineering, biology and finance. Scientists, engineers and computer scientists need to write good code, for speed, clarity, flexibility and ease of re-use. Oliveira and Stewart's style guide for numerical software points out good practices to follow, and pitfalls to avoid. By following their advice, readers will learn how to write efficient software, and how to test it for bugs, accuracy and performance. Techniques are explained with a variety of programming languages, and illustrated with two extensive design examples, one in Fortran 90 and one in C++: other examples in C, C++, Fortran 90 and Java are scattered throughout the book. This manual of scientific computing style will be an essential addition to the bookshelf and lab of everyone who writes numerical software.

    • Gives tips, hints and guidelines for good style in C, C++, Fortran 90 and Java
    • Covers important development tools such as profilers, version control and automated builds
    • Describes template programming and techniques for high-performance software

    Reviews & endorsements

    "...That mechanical engineer would probably do better to pick up Oliveira and Stewart's Writing Scientific Software: A Guide to Good Style, whose subtitle could equally well have been "Things Computational Scientists Ought to Know". The chapter titles are a good summary of its contents: basics of computer organization, software design, data structures, design for testing and debugging, global vs. local optimization, memory bugs and leaks, Unix tools, and so on. The writing is clear (though more diagrams wouldn't have done any harm), and the case studies at the end are well thought out. The authors clearly know their intended audience well."
    Greg Wilson, Dr. Dobb's Journal

    "A top pick for college libraries." - California BookwatchDiane C. Donovan, Midwest Book Review

    See more reviews

    Product details

    September 2006
    Paperback
    9780521675956
    316 pages
    174 × 246 × 16 mm
    0.549kg
    Available

    Table of Contents

    • Part I. Numerical Software:
    • 1. Why numerical software?
    • 2. Scientific computation and numerical analysis
    • 3. Priorities
    • 4. Famous disasters
    • 5. Exercises
    • Part II. Developing Software:
    • 6. Basics of computer organization
    • 7. Software design
    • 8. Modularity and all that
    • 9. Data structures
    • 10. Design for testing and debugging
    • 11. Exercises
    • Part III. Efficiency in Time, Efficiency in Memory:
    • 12. Be algorithm aware
    • 13. Computer architecture and efficiency
    • 14. Global vs. local optimization
    • 15. Grabbing memory when you need it
    • 16. Memory bugs and leaks
    • Part IV. Tools:
    • 17. Sources of scientific software
    • 18. Unix tools
    • 19. Cubic spline function library
    • 20. Multigrid algorithms
    • Appendix A: review of vectors and matrices
    • Appendix B: trademarks
    • Bibliography
    • Index.
    Resources for
    Type
    Authors' website
      Authors
    • Suely Oliveira , University of Iowa

      Suely Oliveira is Associate Professor of Computer Science at the University of Iowa.

    • David E. Stewart , University of Iowa

      David Stewart is an Associate Professor in the Department of Mathematics at the University of Iowa.