Crash course – When biology meets programming

The University of Arizona hosted last Thursday and Friday (April 4th and 5th) a two-day programming workshop focused on introducing Biologists to programming. The course was taught by the Software Carpentry Group, organized by myself (Julie Messier) and co-sponsored by iPlant. Our instructors were Titus Brown, Karen Cranston and Rich Enbody. Katie Cunningham, Darren Boss and Chas Leichner gave a lending hand to the instructors.

While (almost) every graduate students in organismal biology and related fields need some basic programming skills to perform their data analysis and make the graphs, for the most part we have no formal training on the matter. Learning “on the fly” has some advantages over structured courses – such as not spending time learning something you will never use – but it can also be excruciatingly inefficient and painstakingly slow.

My personal search to find an accessible intro courses that would meet my needs as an ecologist was not successful. Most resources appear to be geared towards the needs of geneticists and use scary words such as “next generation sequencing” and “automated pipelining”, things that I doubt I’ll ever have a use for.

Ethan White who teaches a course perfectly tailored to my needs (a semester-long introduction to programming for biologists at Utah State University) referred me to the Software Carpentry Group. They offer 2-day intro-to-programming workshops. All they need is for somebody (me) to organize it and find some money (iPlant) to cover their lodging and airfare. What a great deal! Since many of my fellow graduate students have similar frustrations with figuring out programming on their own, I went ahead and organized the workshop.

Despite a lot of installation and logistic issues, the workshop was mostly a success. We had 35 people signed up and, somehow (!?), even more showing up. Ninety of the participants that came the first day also made it to the second day of the workshop. On the first day, Rich and Karen taught us some python basics and Titus showed us how to use IPython Notebook and the some basics of code testing.  On the second day, we ran short python scripts from the shell and were introduced to Github. The content we covered during the workshop is accessible here. The page contains a very a very useful link to some UA on-campus resources for programming, put together by Katie.

The main issue came about because different participants needed to install and run different programs on their machine.  We needed to install many softwares and the specific combination of softwares that we each ended up using depended on exactly what machines we had. With the endless patience of our instructors and helpers, it took about an hour to get everybody setup each morning and each afternoon….

Ergh!

At the end of the first day, when the instructors and helpers got together at 1702, those installation issues and their potential solutions was the subject of a lively discussion that took up most of the diner. Titus even wrote a blog post to further explore and resolve the issues. We did have dedicated instructors, indeed.

The feedback on the workshop that I have been collecting reflects the participants’ wide range of skills and needs. Although it was too much to absorb over two days (which is what crash courses are, by definition), we have a better sense of how programming works and what kind of software are available. Most importantly, we also have a sense of some of the online resources available.

To make use a cliché: while it is the end of the workshop, it is just the beginning of our programming ventures.

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s