Since this workshop was designed to teach general python skills participants came from a variety of research disciplines. Consequently there was a large spread in programming experience and ability (as well as operating systems). We chose to install software locally rather than using a pre-configured cloud instance. While this takes a little more effort it meant that participants could set up their own GitHub accounts, Git Bash shell and python (Anaconda) installation for use later on. It also gives them a better understanding of how their laptop operates. Fortunately this went rather smoothly. We anticipated that the first half of the first session would be spent troubleshooting Linux, Windows and Mac OSX issues, but this wasn't case. A few days before the workshop we held an hour long helper meeting where participants could come and get help setting up laptops. This turned out to be a really good idea and we'll definitely be offering that next time. For larger workshops we might think about setting up a pre-configured instance using NeCTAR's Research Cloud.
The first session on the Unix shell was a little hit and miss I think - mainly because of the material. If you've used the shell throughout your PhD/postdoc I don't think you get much out of this session, unless you want to brush up on your scripting skills. If you've never used it (or even heard of it) it can be quite baffling. Genevieve did an excellent job teaching this session which is more conceptual, with less guided material than the rest of the workshop. Based on a number of reviews of Python workshops held at other institutions, a favoured option is to present Unix shell material as optional pre-workshop homework therefore allowing more time for Python and SQL.
Python was our language of choice, because it’s free, intuitive and popular, especially in the physical sciences. It's also a useful (and often expected) language for those who want to move into the tech industry. This did not mean that only Python users (or potential users) would benefit from this particular workshop. Since the focus is on learning general programming skills that are transferable to any language, learning Python basics is a good place to start. We covered the most useful elements of programming; manipulating data, plotting, using loops and conditional statements ("for", "if", "else" etc.) and functions.
The structure of the workshop was mix of guided teaching with challenges thrown in along the way. Participants were encouraged to work in small groups and discuss ideas. Of course we spent more time on each session than originally planned, but this seems to be typical of Software Carpentry courses - too much (great!) material, too little time.
From Software Carpentry at Swinburne - Workshop resources for Swinburne researchers.