This two-day software-carpentry.org workshop teaches basic computational research skills using the programming language Python. Sessions include the following.
- Program design: Throwing some code together that “just works” may be easy (at least for some people). But creating code that is amenable to debugging and improvement, and that doesn’t fail in odd and inexplicable ways, is harder. We’ll show you how to break down a problem into comprehensible pieces, how to anticipate and guard against bugs, and why you should write code to be read by humans, not (just) computers.
- Task Automation: The Unix shell is a power tool that allows you to do complex things with just a few keystrokes. Most importantly, it helps you combine existing software programs in new ways and automate repetitive tasks so you aren’t typing the same things over and over again. Knowledge of the shell is fundamental to using a wide range of other powerful tools and computing resources, including “high-performance computing” supercomputers.
- Version Control with Git: Keeping a record of what was changed, when, and why is extremely useful if you ever need to come back to the project later on (e.g., a year later, when memory has faded). Version control is the lab notebook of the digital world: it’s what professionals use to keep track of what they’ve done, and to collaborate with other people. Every large software development project relies on it, and most programmers use it for their small jobs as well. This module will demonstrate the popular version control tool Git and how to use it.
This is a hands-on workshop, where collaboration is encouraged and participants are asked to apply their learning to individual projects.
The workshop is of interest to: current computational researchers and their teams; industry innovation teams; anyone considering a project that requires computational resources beyond the capabilities of a desktop; or students who want to gain these skills to enhance their career choices.