By Mike Jackson, Software Architect
Early March saw us deliver our annual Software Carpentry workshop for the Regenerative Medicine Centre for Doctoral Training at The University of Manchester. I was joined by co-instructors Peter Smyth and David Mawdsley and helpers Nicolas Gruel and Nilani Ganeshwaran from The University of Manchester. Our course was run within the impressive redbrick edifice that is the Sackvile Street Building.
We gave the attendees an introduction to the bash shell, good programming practice using Python, and version control with Git. We started with 20 attendees and ended with 16, which is one of the lower rates of attrition I've seen.
There were the inevitable setup problems arising from attendees having Linux, Windows and Mac OS, and different flavours of Python. This meant that for some attendees, as one commented, "my Anaconda software and what was on the projector was different" and that the course was "sometimes hard to follow."
Of the concepts covered, loops seemed to be the most challenging, for both bash shell and Python, attendees questioning why they are used and in what circumstances. One attendee commented that "Some of the coding vocab is a bit lost on me!" which coincidentaly relates to a recent thread on the Software Carpentry discuss mailing list, on "Code Phonology - on reading code aloud". I'm aware that I used multiple terms interchangeably (attributes and properties; references and pointers; command prompt, shell window, bash window, terminal) when being consistent would be preferable.
From the attendees' feedback, the most valuable skill learned seemed to be how to create files with code that could be rerun at a later date, and how to create libraries in Python. General comments included:
"I've become more familiar with using commands to create directories, pipelines and loops. Thanks!"
"I liked the building block style introduction (for Python). Much better than going straight to numpy which I had been 'taught' to use before."
"I found it very helpful thanks!" "Everything was new and interesting!"
My fellow instructors and helpers and myself hope the attendees go on to apply and develop their skills in automation, good programming practice and revision control and, in the words of Software Carpentry, help them to achieve more, in less time, with less pain!