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.