Software Carpentry - Overview Iowa State

Software Carpentry Team

January 2014

Copy This Lecture!







Creative Commons License
Software Carpentry Overview by Software Carpentry is licensed under a Creative Commons Attribution 3.0 Unported License.

More About Software Carpentry

History

What We Teach

What We Actually Teach

How to THINK like a programmer

Who We Teach

Who We Are

Our Goals for You

We will take you on a tour of:

Some High-Level Advice

Be fluent in multiple languages

You speak multiple languages when interacting with a computer. Choosing to use a new tool, library, or language can be similar to learning a new language:

Make it work right first, make it fast later.

Don't Repeat Yourself (or Others)

Automate common actions by saving simple blocks of code into scripts

Reduce Complexity

Basic strategies

Back up your data!

Use version control for checkpointing and collaboration

Verify and Validate your Code

Principles of verification and validation

Document your computational work

Schedule

Closing Thoughts

You sometimes need geeks.

References and Further Reading

Programming Languages for Scientific Computing

Matthew G. Knepley

Preprint: http://arxiv.org/pdf/1209.1711.pdf

Gives an overview of modern programming languages and techniques such as code generation, templates, and mixed-language designs. This is a preprint, so expect some rough spots.

Two Solitudes

Greg Wilson

Slides: http://www.slideshare.net/gvwilson/two-solitudes

Describes Greg's journey as a scientist and leader for the Software Carpentry project, provides some insight into the differences between industry and academics.

Best Practices for Scientific Computing

D. A. Aruliah, C. Titus Brown, Neil P. Chue Hong, Matt Davis, Richard T. Guy, Steven H. D. Haddock, Katy Huff, Ian Mitchell, Mark Plumbley, Ben Waugh, Ethan P. White, Greg Wilson, Paul Wilson

Preprint: http://arxiv.org/abs/1210.0530