Many scientists and engineers spend much of their lives writing, debugging, and maintaining software, but only a handful have ever been taught how to do this effectively: after a couple of introductory courses, they are left to rediscover (or reinvent) the rest of programming on their own. As a result, most spend far too much time wrestling with software, instead of doing research, but have no idea how reliable or efficient their programs are.
This talk describes an intensive course on basic software development practices for scientists and engineers. Its aim is not to turn biochemists and mechanical engineers into computer scientists; instead, it introduces them to the 10% of modern software engineering that will satisfy 90% of their needs. The course has been taught at laboratories and universities in Canada and the United States since 1998. All of the course material is freely available under an open license.
- Berkun: The Art of Project Management
- Doar: Practical Development Environments
- Feathers: Working Effectively with Legacy Code
- Fogel: Producing Open Source Software
- Glass: Facts & Fallacies of Software Engineering
- Hunt & Thomas: The Pragmatic Programmer
- Spinellis: Code Reading and Code Quality
Greg Wilson graduated from Mathematics & Engineering at Queen's in 1984, and received a Ph.D. in Computer Science from the University of Edinburgh in 1995. He has worked in both academia and industry on high-performance scientific computing, data visualization, and computer security. His most recent book is "Data Crunching" (Pragmatic Bookshelf, 2005), and he is now developing a course on basic software development skills for scientists and engineers. Greg is a freelance consultant, a contributing editor with "Doctor Dobb's Journal", and an adjunct professor in Computer Science at the University of Toronto.
Researchers should cite this work as follows:
(2006), "Software Carpentry: Essential Software Skills for Research Scientists," http://nanohub.org/resources/1811.
Room 121, Burton Morgan