Reading

Books

Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson: Practical Programming: An Introduction to Computer Science Using Python. Pragmatic Bookshelf, 1934356271, 2009.

An introduction to programming using Python that includes material on building GUIs, working with databases, and a few other useful things.

Michael Feathers: Working Effectively with Legacy Code. Prentice Hall PTR, 0131177052, 2004.

If code is exercised by unit tests, changes can be made quickly and safely; if it isn't, they can't, so your first job when you inherit legacy code should be to write some. That's where this book comes in. What to know three different ways to inject a test into a C++ class without changing the code? Or which classes or methods to focus testing on? It's all here, along with lots of other useful information.

Chris Fehily: SQL. Peachpit Press, 0321118030, 2002.

Describes the 5% of SQL that covers 95% of real-world needs. While it moves a little slowly in some places, the examples are exceptionally clear.

Karl Fogel: Producing Open Source Software: How to Run a Successful Free Software Project. O'Reilly Media, 0596007590, 2005.

This book is an excellent guide to how open source projects actually work. Every page offers practical advice on how to earn commit privileges on a project, get it more attention, or fork it in case of irreconcilable differences.

Robert L. Glass: Facts and Fallacies of Software Engineering. Addison-Wesley Professional, 0321117425, 2002.

Most of us have heard know that maintenance consumes 40-80% of software costs, but did you know that roughly 60% of that is enhancements, rather than bug fixes? Or that if more than 20-25% of a component has to be modified, it is more efficient to re-write it from scratch? Those facts, and many more, are in this little book, along with references to the primary literature to back up every claim it makes.

Steve Haddock and Casey Dunn: Practical Computing for Biologists. Sinauer, 0878933913, 2010.

The best general introduction to "the other 90%" of scientific computing on the market today, this book covers all of the core material of this course and more.

Henrik Kniberg: Scrum and XP from the Trenches. InfoQ, 1430322640, 2007.

As the title suggests, this is a practitioner's reflections on two popular agile development methodologies.

Hans Petter Langtangen: Python Scripting for Computational Science. Springer, 3540739157, 2007.

The book's aim is to show scientists and engineers with little formal training in programming how Python can make their lives better. Regular expressions, numerical arrays, persistence, the basics of GUI and web programming, interfacing to C, C++, and Fortran: it's all here, along with hundreds of short example programs.

Hans Petter Langtangen: A Primer on Scientific Programming with Python. Springer, 3642024742, 2009.

An introduction to scientific computing using Python.

Steve McConnell: Code Complete: A Practical Handbook of Software Construction. Microsoft Press, 0735619670, 2004.

This classic handbook covers everything from how to avoid common mistakes in C to how to set up a testing framework, how to organize multi-platform builds, and how to coordinate the members of a team.

Wes McKinney: Python for Data Analysis. O'Reilly, 1449319793, 2012.

A practical introduction to data crunching in Python that covers a lot more than just statistics.

Michael Nygard: Release It!: Design and Deploy Production-Ready Software. Pragmatic Bookshelf, 0978739213, 2007.

This book is about designing applications to deal with the things that don't happen in the classroom or the lab: load fluctuations, power outages, upgrades, tangled configurations, and everything else you have to worry about when scaling up applications to work in the real world.

Andy Oram and Greg Wilson (editors): Making Software: What Really Works, and Why We Believe It. O'Reilly, 0596808321, 2010.

Leading software engineering researchers take a chapter each to describe key empirical results and the evidence behind them. Topics range from the impact of programming languages on programmers' productivity to whether we can predict software faults using statistical techniques.

Dan Pilone and Russ Miles: Head First Software Development. O'Reilly Media, 0596527357, 2008.

Many people will find this book's cartoon-ish format and awkward jokes annoying, but it's still a good hype-free introduction to agile development practices.

Deborah S. Ray and Eric J. Ray: Unix and Linux: Visual QuickStart Guide. Peachpit Press, 0321636783, 2009.

A gentle introduction to Unix, with many examples.

Robert Sedgewick: Algorithms in C. Addison-Wesley Professional, 0201756080, 2001.

These books are a guide to all the other conceptual tools that working programmers ought to have at their fingertips, from sorting and searching algorithms to different kinds of trees and graphs. The analysis is far more accessible than that of many other textbooks, and while the author's use of C may seem old-fashioned in an age of Java and C++, it does ensure that nothing magical is hidden inside an overloaded operator or virtual method call.

Papers

  1. Jonathan B. Buckheit and David L. Donoho: "WaveLab and Reproducible Research." 1995.
  2. Paul F. Dubois: "Maintaining Correctness in Scientific Programs." Computing in Science & Engineering, May–June 2005.
  3. David Goldberg: "What Every Computer Scientist Should Know About Floating-Point Arithmetic." ACM Computing Surveys, 23(1), March 1991.
  4. Jo Erskine Hannay, Hans Petter Langtangen, Carolyn MacLeod, Dietmar Pfahl, Janice Singer, and Greg Wilson: "How Do Scientists Develop and Use Scientific Software?" Proc. 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering,2009.
  5. William Stafford Noble: "A Quick Guide to Organizing Computational Biology Projects". PLoS Computational Biology, 5(7), 2009.
  6. Evan Robinson: "Why Crunch Mode Doesn't Work: 6 Lessons." http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons (last accessed January 2012).
  7. Rebecca Sanders and Diane Kelly: "Dealing with Risk in Scientific Software Development." IEEE Software, July–August 2008.
  8. Gregory V. Wilson: "Where's the Real Bottleneck in Scientific Computing?" American Scientist, January–February 2005.
  9. Greg Wilson: "Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive." Computing in Science & Engineering, November–December 2006.
  10. Greg Wilson: "Those Who Will Not Learn From History..." Computing in Science & Engineering, May–June 2008.
  11. Gregory Wilson: "How Do Scientists Really Use Computers?" American Scientist, September–October 2009.
  12. Laura Wingerd and Christopher Seiwald: "High-level Best Practices in Software Configuration Management". Last accessed October 2012.

Research in Computational Science and Software Engineering

BibTeX source

  1. Karen S. Ackroyd, Steve H. Kinder, Geoff R. Mant, Mike C. Miller, Christine A. Ramsdale, and Paul C. Stephenson. Scientific Software Development at a Research Facility. IEEE Software, pages 44–51, July-August 2008.
  2. Victor R. Basili, Danelia Cruzes, Jeffrey C. Carver, Lorin M. Hochstein, Jeffrey K. Hollingsworth, Marvin V. Zelkowitz, and Forrest Shull. Understanding the High-Performance-Computing Community: A Software Engineer's Perspective. IEEE Software, 25(4):29–36, July 2008. (doi:10.1109/MS.2008.103)
  3. Susan M. Baxter, Steven W. Day, Jacquelyn S. Fetrow, and Stephanie J. Reisinger. Scientific Software Development Is Not an Oxymoron. PLoS Computational Biology, 2(9):e87, 2006.
  4. Ronald F. Boisvert and Ping Tak Peter Tang, editors. The Architecture of Scientific Software. Springer, 2001.
  5. Alan Calder, Jonathan Dursi, Bruce Fryxell, Tomek Plewa, Greg Weirs, Todd Dupont, Harry Robey, Jave Kane, Bruce Remington, Frank Timmes, Guy Dimonte, John Hayes, Mike Zingale, Paul Drake, Paul Ricker, Jim Stone, and Kevin Olson. Validating Astrophysical Simulation Codes. Computing in Science & Engineering, 6(5):10–20, 2004.
  6. Jeffrey Carver, Lorin Hochstein, Richard Kendall, Taiga Nakamura, Marvin Zelkowitz, Victor Basili, and Douglass Post. Observations about Software Development for High End Computing. CTWatch Quarterly, 2(4A):33–38, November 2006.
  7. Jeffrey C. Carver, Richard P. Kendall, Susan E. Squires, and Douglass E. Post. Software Development Environments for Scientific and Engineering Software: A Series of Case Studies. In Proc. 29th International Conference on Software Engineering, 2007. (doi:10.1109/ICSE.2007.77)
  8. Jeffrey C. Carver. Post-Workshop Report for the Third International Workshop on Software Engineering for High Performance Computing Applications. ACM Software Engineering Notes, 11(4):38–43, 2007.
  9. Jeffrey C. Carver. First international workshop on software engineering for computational science and engineering. In Proc. 30th International Conference on Software Engineering, pages 1071–1072. ACM, 2008. (doi:10.1145/1370175.1370252)
  10. Jeffrey C. Carver. Second international workshop on software engineering for computational science and engineering. In Proc. 31st International Conference on Software Engineering, pages 484–485. IEEE, 2009.
  11. Jeffrey Clark Carver. Report from the Second International Workshop on Software Engineering for Computational Science and Engineering. Computing in Science & Engineering, 11(6):14–19, 2009.
  12. J. C. Carver. Development of a Mesh Generation Code with a Graphical Front-End: A Case Study. Journal of Organizational and End-User Computing, page 16, 2011.
  13. T. L. Clune and K. Kuo. Test Driven Development: Lessons from a Simple Scientific Model. AGU Fall Meeting Abstracts, page A1100, December 2010.
  14. Carlton A. Crabtree, A. Gunes Koru, Carolyn Seaman, and Hakan Erdogmus. An Empirical Characterization of Scientific Software Development Projects According to the Boehm and Turner Model: A Progress Report. In Second International Workshop on Software Engineering for Computational Science and Engineering, pages 22–27, 2009. (doi:10.1109/SECSE.2009.5069158)
  15. Bronis R. de Supinski, Jeffrey K. Hollingworth, Shirley Moore, and Patrick H. Worley. Results of the PERI survey of SciDAC applications. Journal of Physics: Conference Series, 2007. (doi:10.1088/1742-6596/78/1/012027)
  16. Glenn Downing, Paul F. Dubois, and Teresa Cottom. Data Sharing in Scientific Simulations. Computing in Science & Engineering, 6(3):87–96, May-June 2004. (doi:10.1109/MCSE.2004.45)
  17. P. F. Dubois, T. Epperly, and G. Kumfert. Why Johnny Can't Build (Portable Scientific Software). Computing in Science & Engineering, 5(5):83–88, 2003. (doi:10.1109/MCISE.2003.1225867)
  18. P. F. Dubois. Maintaining Correctness in Scientific Programs. Computing in Science & Engineering, 7(3):80–85, May-June 2005. (doi:10.1109/MCSE.2005.54)
  19. Steve M. Easterbrook and Timothy C. Johns. Engineering the Software for Understanding Climate Change. Computing in Science & Engineering, 11(6):65–74, November-December 2009. (doi:10.1109/MCSE.2009.193)
  20. Steven L. Eddins. Automated Software Testing for Matlab. Computing in Science & Engineering, 11(6):48–55, 2009. (doi:10.1109/MCSE.2009.186)
  21. S. Faulk, J. Gustafson, P. M. Johnson, A. Porter, W. Tichy, and Lawrence Votta. Measuring HPC Productivity. International Journal of High Performance Computing Applications, 18(4), 2004.
  22. Stuart Faulk, Eugene Loh, Michael L. Van De Vanter, Susan Squires, and Lawrence G. Votta. Scientific Computing's Productivity Gridlock: How Software Engineering Can Help. Computing in Science & Engineering, 11(6):30–39, 2009. (doi:10.1109/MCSE.2009.186)
  23. Yolanda Gil, Pedro A. González-Calero, and Ewa Deelman. On the Black Art of Designing Computational Workflows. In 2nd Workshop on Workflows in Support of Large-Scale Science, pages 53–62. ACM, 2007.
  24. Robert Gray and Diane Kelly. Investigating Test Selection Techniques for Scientific Software Using Hook's Mutation Sensitivity Testing. In Third International Workshop on Software Engineering for Computational Science and Engineering, May 2010.
  25. C. Greenough and D. J. Worth. Computational Science and Engineering Department Software Development Best Practice. Technical Report RAL-TR-2008-022, SFTC Rutherford Appleton Laboratory, 2008.
  26. J. Gustafson. Purpose-Based Benchmarks. International Journal of High Performance Computing Applications, 18(4):475–487, 2004. (doi:10.1177/1094342004048540)
  27. Jo Erskine Hannay, Hans Petter Langtangen, Carolyn MacLeod, Dietmar Pfahl, Janice Singer, and Greg Wilson. How Do Scientists Develop and Use Scientific Software? In Second International Workshop on Software Engineering for Computational Science and Engineering, 2009.
  28. L. Hatton and A. Roberts. How Accurate is Scientific Software? IEEE Transactions on Software Engineering, 20(10):785–797, 1994.
  29. L. Hatton. The T Experiments: Errors in Scientific Software. Computational Science & Engineering, 4(2):27–38, 1997.
  30. Michael A. Heroux and James M. Willenbring. Barely-Sufficient Software Engineering: 10 Practices to Improve Your CSE Software. In Second International Workshop on Software Engineering for Computational Science and Engineering, 2009.
  31. Michael A. Heroux. Improving CSE Software Through Reproducibility Requirements. In Fourth International Workshop on Software Engineering for Computational Science and Engineering, pages 28–31, 2011. (doi:10.1145/1985782.1985787)
  32. L. Hochstein and V. R. Basili. The ASC-Alliance Projects: A Case Study of Large-Scale Parallel Scientific Code Development. IEEE Computer, 41(3):50–58, March 2008. (doi:10.1109/MC.2008.101)
  33. L. Hochstein, J. Carver, F. Shull, S. Asgari, V. R. Basili, J. Hollingsworth, and M. Zelkowitz. Parallel Programmer Productivity: A Case Study of Novice HPC Programmers. In Proceedings of Supercomputing 2005, 2005. (doi:10.1109/SC.2005.53)
  34. Lorin M. Hochstein, Forrest Shull, and Lynn B. Reid. The Role of MPI in Development Time: a Case Study. In Proceedings of Supercomputing 2008, pages 1–10, 2008.
  35. Daniel Hook and Diane Kelly. Testing for Trustworthiness in Scientific Software. In Second International Workshop on Software Engineering for Computational Science and Engineering, May 2009.
  36. Daniel Hook and Diane Kelly. Mutation Sensitivity Testing. Computing in Science & Engineering, 11(6):40–47, 2009. (doi:10.1109/MCSE.2009.186)
  37. James Howison and James D. Herbsleb. Scientific Software: Production and Collaboration. In Proc. Computer Support for Cooperative Work 2011, 2011.
  38. Jeffrey N. Johnson and Paul F. Dubois. Issue Tracking. Computing in Science & Engineering, 5(6):71–77, November 2003.
  39. Philip M. Johnson and Michael G. Paulding. Understanding HPC Development through Automated Process and Product Measurement with Hackystat. In Second Workshop on Productivity and Performance in High-End Computing, 2005.
  40. David Kane, Moses Hohman, Ethan Cerami, Michael McCormick, Karl Kuhlmman, and Jeff Byrd. Agile Methods in Biomedical Software Development: a Multi-Site Experience Report. BMC Bioinformatics, 7(1):273, 2006. (doi:10.1186/1471-2105-7-273)
  41. David Kane. Introducing Agile Development into Bioinformatics: An Experience Report. In Proc. Agile Development Conference 2005, 2005.
  42. Diane Kelly and John Harauz. Software Development Processes and Analysis Software: A Mismatch and a Novel Framework. In Proc. Canadian Nuclear Society Conference, 2011.
  43. Diane Kelly and Rebecca Sanders. Mismatch of Strategies: Scientific Researchers and Commercial Software Suppliers, July 2007.
  44. Diane Kelly and Rebecca Sanders. Assessing the Quality of Scientific Software. In First International Workshop on Software Engineering for Computational Science and Engineering, May 2008.
  45. Diane Kelly and Terry Shepard. A Little Knowledge about Software. IEEE Software, pages 46–48, March-April 2004.
  46. Diane Kelly and Terry Shepard. Task-Directed Inspection. Journal of Systems and Software, 73(2):361–368, October 2004.
  47. Diane Kelly and Terry Shepard. Eight Maxims for Software Code Inspections. Journal of Software Testing, Verification, and Reliability, 14(4):243–256, December 2004.
  48. Diane Kelly, Nancy Cote, and Terry Shepard. Software Engineers and Nuclear Engineers: Teaming up to do Testing. In Proc. Canadian Nuclear Society Conference, June 2007.
  49. Diane Kelly, Daniel Hook, and Rebecca Sanders. Five Recommended Practices for Computational Scientists Who Write Software. Computing in Science & Engineering, 11(5):48–53, 2009. (doi:10.1109/MCSE.2009.139)
  50. Diane Kelly, Robert Gray, and Yizhen Shao. Examining Random and Designed Tests to Detect Code Mistakes in Scientific Software. Journal of Computational Science, 2(1):47–56, March 2011. (doi:10.1016/j.jocs.2010.12.002)
  51. Diane Kelly, Stefan Thorsteinson, and Daniel Hook. Scientific Software Testing: Analysis in Four Dimensions. IEEE Software, pages 84–90, May-June 2011.
  52. Diane Kelly, Daniel Hook, and Rebecca Sanders. A Framework for Testing Computational Software. In J. Leng and W. Sharrock, editors, Handbook of Research on Computational Science and Engineering: Theory and Practice, pages 177–196. IGI Global, 2011. (doi:10.4018/978-1-61350-116-0.ch008)
  53. Diane Kelly, Spencer Smith, and Nicholas Meng. Software Engineering for Scientists. Computing in Science & Engineering, 13(5):7–11, 2011. (doi:10.1109/MCSE.2011.86)
  54. Diane Kelly. A Study of Design Characteristics in Evolving Software Using Stability as a Criterion. IEEE Transactions on Software Engineering, 32(5):315–329, May 2006.
  55. Diane F. Kelly. A Software Chasm: Software Engineering and Scientific Computing. IEEE Software, 24:120, 118–119, 2007. (doi:10.1109/MS.2007.155)
  56. Diane Kelly. Innovative Approaches for Developing Scientific Software. Journal of Organizational and End-User Computing, 23(4):63–78, December 2011.
  57. R. P. Kendall, J. Carver, A. Mark, D. Post, S. Squires, and D. Shaffer. Case Study of the Hawk Code Project. Technical Report LA-UR-05-9011, Los Alamos National Laboratory, 2005.
  58. Richard Kendall, Andrew Mark, Douglass Post, Susan Squires, and Christine Halverson. Case Study of the Condor Code Project. Technical report, Los Alamos National Laboratory, 2005.
  59. R. P. Kendall, D. Post, S. Squires, and J. Carver. Case Study of the Eagle Code Project. Technical Report LA-UR-06-1092, Los Alamos National Laboratory, 2006.
  60. R. Kendall, J. C. Carver, D. Fisher, D. Henderson, A. Mark, D. Post, C. E. Rhoades Jr, and S. Squires. Development of a Weather Forecasting Code: A Case Study. IEEE Software, 25(4):59–65, 2008.
  61. Richard P. Kendall, Andrew Mark, Susan E. Squires, and Christine A. Halverson. Condor: Case Study of a Large-Scale, Physics-Based Code Development Project. Computing in Science & Engineering, 12(3):22–27, 2010. (doi:10.1109/MCSE.2010.59)
  62. Richard P. Kendall, Douglass E. Post, and Andrew Mark. Case Study of the Nene Code Project. Computing in Science & Engineering, 12(3):28–33, 2010. (doi:10.1109/MCSE.2010.57)
  63. Sarah Killcoyne and John Boyle. Managing Chaos: Lessons Learned Developing Software in the Life Sciences. Computing in Science & Engineering, 11(6):20–29, 2009. (doi:10.1109/MCSE.2009.198)
  64. D. J. Kuck. Productivity in High Performance Computing. International Journal of High Performance Computing Applications, 18(4), 2004.
  65. G. Kumfert and T. Epperly. Software in the DOE: The Hidden Overhead of "The Build". Technical Report UCRL-ID-147343, Lawrence Livermore National Lab., February 2002. (doi:10.2172/15005938)
  66. Patrick Martin, Anatol Kark, and Darlene Stewart, editors. 2nd Workshop on Software Engineering for Science, November 2009.
  67. David Matthews, Greg Wilson, and Steve Easterbrook. Configuration Management for Large-Scale Scientific Computing at the UK Met Office. Computing in Science & Engineering, November-December 2008.
  68. Nicholas Jie Meng, Diane Kelly, and Thomas R. Dean. Towards the Profiling of Scientific Software for Accuracy. In Proc. IBM CASCON 2011, November 2011.
  69. Zeeya Merali. Error: Why Scientific Programming Does Not Compute. Nature, 467:775–777, 2010.
  70. C. Morris and J. Segal. Some Challenges Facing Scientific Software Developers: the Case of Molecular Biology. In 5th International IEEE Conference on E-Science, pages 216–222, 2009.
  71. R. Mugridge. Test Driven Development and the Scientific Method. In Proc. Agile Development Conference 2003, pages 47–52, 2003.
  72. Luke Nguyen-Hoan, Shayne Flint, and Ramesh Sankaranarayana. A Survey of Scientific Software Development. In Proc. ACM-IEEE Internation Symposium on Empirical Software Engineering and Measurement 2010, 2010.
  73. Dianne P. O'Leary. Computational Software: Writing Your Legacy. Computing in Science & Engineering, 8(1):78–83, 2006.
  74. C. M. Pancake and C. Cook. What Users Need in Parallel Tool Support: Survey Results and Analysis. In Proc. Scalable High-Performance Computing Conference, 1994.
  75. Victor Pankratius, Ali Jannesari, and Walter F. Tichy. Parallelizing Bzip2: A Case Study in Multicore Software Engineering. IEEE Software, 26(6):70–77, 2009. (doi:10.1109/MS.2009.183)
  76. David W. Pierce. Beyond the Means: Validating Climate Models with Higher-Order Statistics. Computing in Science & Engineering, 6(5):22–29, 2004.
  77. Joe Pitt-Francis, Miguel O. Bernabeu, Jonathan Cooper, Alan Garny, Lee Momtahan, James Osborne, Pras Pathmanathan, Blanca Rodriguez, Jonathan P. Whiteley, and David J. Gavaghan. Chaste: Using Agile Programming Techniques to Develop Computational Biology Software. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 366(1878):3111–3136, September 2008. (doi:10.1098/rsta.2008.0096)
  78. D. E. Post and Richard P. Kendall. Software Project Management and Quality Engineering Practices for Complex, Coupled Multi-Physics, Massively Parallel Computational Simulations: Lessons Learned from ASCI. Technical Report LA-UR-03-1274, Los Alamos National Laboratory, 2003.
  79. D. E. Post and R. P. Kendall. Large-Scale Computational Scientific and Engineering Code Development and Production Workflows. In Proc. 12th Workshop on Use of High Performance Computing in Meteorology, October 2006.
  80. Douglass E. Post and Lawrence G. Votta. Computational Science Demands a New Paradigm. Physics Today, 58(1):35–41, January 2005. (doi:10.1063/1.1881898)
  81. D. E. Post, Richard P. Kendall, and Robert F. Lucas. The Opportunities, Challenges and Risks of High Performance Computing in Computational Science and Engineering. Advances in Computers, pages 240–297, 2006.
  82. Yann Pouillon, Jean-Michel Beuken, Thierry Deutsch, Marc Torrent, and Xavier Gonze. Organizing Software Growth and Distributed Development: The Case of Abinit. Computing in Science & Engineering, 13(1):62–69, 2011. (doi:10.1109/MCSE.2011.13)
  83. James Quirk. Computational Science: Same Old Silence, Same Old Mistakes, Something More Is Needed.... In Tomasz Plewa, Timur Linde, and V. Gregory Weirs, editors, Adaptive Mesh Refinement: Theory and Applications, volume 41 of Lecture Notes in Computational Science and Engineering, pages 3–28. Springer Berlin Heidelberg, 2005. (doi:10.1007/3-540-27039-6_1)
  84. Patrick J. Roache. Building PDE Codes to be Verifiable and Validatable. Computing in Science & Engineering, 6(5):30–38, 2004.
  85. A. Rodman and M. Brorsson. Programming Effort vs. Performance with a Hybrid Programming Model for Distributed Memory Parallel Architectures. In P. Amestoy, P. Berger, M. Daydé, I. Duff, V. Frayssé, L. Giraud, and D. Ruiz, editors, Euro-Par'99: 5th International Euro-Par Conference, volume 1685, pages 888–898. Springer-Verlag GmbH, September 1999.
  86. R. Sanders and D. Kelly. Dealing with Risk in Scientific Software Development. IEEE Software, 25(4):21–28, July-August 2008.
  87. Rebecca Sanders and Diane Kelly. The Challenge of Testing Scientific Software. In Proc. Conference for the Association for Software Testing, pages 30–36, July 2008.
  88. R. Sanders. The Development and Use of Scientific Software. Master's thesis, Queen's University, 2008.
  89. J. Segal and S. Clarke. Software Engineers Don't Know Everything About End-User Programming. IEEE Software, September-October 2009.
  90. J. Segal and C. Morris. Developing Scientific Software. IEEE Software, 25(4):18–20, 2008.
  91. J. Segal and C. Morris. Developing Software For A Scientific Community: Some Challenges And Solutions. In J. Leng and W. Sharrock, editors, Handbook of Research on Computational Science and Engineering: Theory and Practice, pages 177–196. IGI Global, 2011. (doi:10.4018/978-1-61350-116-0.ch008)
  92. J. Segal and C. Morris. Scientific End-User Developers and Barriers to Use/Customer Engagement. Journal of Organizational and End User Computing, 23(4):51–63, 2011.
  93. Judith Segal, Diane Kelly, and Jeffrey Carver. Guest Editorial Preface: Special Issue on Scientific End User Computing. Journal of Organizational and End User Computing, 23(4), December 2011.
  94. J. Segal. Two Principles of End-User Software Engineering Research. In 1st Workshop on End User Software Engineering, May 2005.
  95. Judith Segal. When Software Engineers Met Research Scientists: A Case Study. Empirical Software Engineering, 10(4):517–536, 2005.
  96. J. Segal. Some Problems of Professional End User Developers. In IEEE Symposium on Visual Languages and Human-Centric Computing, pages 111–118, 2007.
  97. J. Segal. Models of Scientific Software Development. In First International Workshop on Software Engineering for Computational Science and Engineering, 2008.
  98. J. Segal. Scientists and Software Engineers: A Tale of Two Cultures. In Proc. Psychology of Programming Interest Group, 2008.
  99. J. Segal. Software Development Cultures and Cooperation Problems: a Field Study of the Early Stages Of Development of Software for a Scientific Community. Computer Supported Cooperative Work, 18(5/6):581–606, 2009.
  100. J. Segal. Some Challenges Facing Software Engineers Developing Software for Scientists. In Second International Workshop on Software Engineering for Computational Science and Engineering, pages 9–14, 2009. (doi:10.1109/SECSE.2009.5069156)
  101. David E. Skinner, Jon Stearley, John Hules, and Jon Bashor. Report of the 3rd DOE Workshop on HPC Best Practices: Software Lifecycles. Technical report, US Department of Energy, September 2009.
  102. Susan Squires, Michael L. Van De Vanter, and Lawrence G. Votta. Software Productivity Research in High Performance Computing. CTWatch Quarterly, 2006.
  103. T. Sterling. Productivity Metrics and Models for High Performance Computing. International Journal of High Performance Computing Applications, 18(4), 2004.
  104. Jin Tang. Developing Scientific Computing Software: Current Processes and Future Directions. Master's thesis, McMaster University, 2008.
  105. Michele Vallisneri and Stanislav Babak. Python and XML for Agile Scientific Computing. Computing in Science & Engineering, 10(1):80–87, January 2008. (doi:10.1109/MCSE.2008.20)
  106. Gregory R. Watson and Nathan A. DeBardeleben. Developing Scientific Applications Using Eclipse. Computing in Science & Engineering, 8(4):50–61, 2006.
  107. Gregory R. Watson and Craig E. Rasmussen. A Strategy for Addressing the Needs of Advanced Scientific Computing Using Eclipse as a Parallel Tools Platform. Technical report, Los Alamos National Laboratory, December 2005.
  108. James M. Willenbring, Michael A. Heroux, and Robert T. Heaphy. The Trilinos Software Lifecycle Model. In Proceedings of the 3rd International Workshop on Software Engineering for High Performance Computing Applications, 2007. (doi:10.1109/SE-HPC.2007.5)
  109. Greg Wilson and Andrew Lumsdaine. Software Engineering and Computational Science. Computing in Science & Engineering, 11(6):12–13, 2009. (doi:10.1109/MCSE.2009.206)
  110. Gregory V. Wilson. What Should Computer Scientists Teach to Physical Scientists and Engineers? IEEE Computational Science & Engineering, Summer-Fall 1996.
  111. Greg Wilson. Where's the Real Bottleneck in Scientific Computing? American Scientist, January-February 2006.
  112. Greg Wilson. Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive. Computing in Science & Engineering, November-December 2006.
  113. Greg Wilson. Those Who Will Not Learn From History... Computing in Science & Engineering, May-June 2008.
  114. Greg Wilson. How Do Scientists Really Use Computers?. American Scientist, 97(5):8–10, September-October 2009. (doi:10.1511/2009.80.360)
  115. Nicole Wolter, Michael O. McCracken, Allan Snavely, Lorin Hochstein, Taiga Nakamura, and Victor Basili. What's Working in HPC: Investigating HPC User Behavior and Productivity. CTWatch Quarterly, 2(4A):9–17, November 2006.
  116. William A. Wood and William L. Kleb. Exploring XP for Scientific Research. IEEE Software, 20(3):30–36, 2003.

Blogs

  1. It will never work in theory - empirical research into software development
  2. Retraction Watch - the latest on retracted papers
  3. Software Sustainability Institute

Hints, tips, advice and cautionary tales

  1. Computational Science beta - a question and answer site for scientists using computers to solve scientific problems
  2. Advice from newbie to newbie when starting to adopt software development best practice
  3. Top ten reasons not to share your code (and why you should anyway) by Randall LeVeque on the Society for Industrial and Applied Mathematics blog
  4. How to ask questions the smart way by open source guru, Eric Raymond
  5. A pipeline is a Makefile and so can be used to automate data processing pipelines
  6. Geoffrey Chang's letter of retraction of his Science papers and his Wikipedia page highlighting his retraction. All because of a flipped sign bit
  7. Ross McKitrick and Patrick Michaels' Climate Research paper, blogs by Crooked Timber and Deltoid highlighting that they didn't convert degrees to radians, and McKitrick and Michaels' subsequent erratum

Humor with a point

  1. Is it worth the time - a chart summarising how long do you spend making a routine task more efficient before you're spending more time than you save
  2. Geeks versus non-geeks when doing repetitive tasks - a chart comparing the two
  3. Data sharing and management SNAFU in 3 short acts - a short animation
  4. Coding Confessional - coders come clean about their bad practices, please do not emulate!