This week, I was asked to help out with one of Software Carpentry‘s bootcamps at NYU. If you are a twitter follower I encourage you to check out the stream of #swc tweets that went out over the past couple of days.
I had heard of Software Carpentry (SWC) before, and I had used some of their tutorials listed on their site. As a side note, if you are interested in learning more about programming, SWC has a great library of tutorial videos on a range of subjects, from the basics of the shell and version control to regular expressions and program design. What is great about these videos is that you can either watch them (with audio and video) or you can read through with slide images and a script. I think this is great for self directed learning.
As a helper, I was supposed to help the people taking the bootcamp with any issues/troubleshooting. I was admittedly nervous about this, because although I was helping out in the R room, there are a number of other topics covered during the workshop. The SWC bootcamps typically cover four main areas of programming skill: the shell, Python/R, Git and GitHub, and SQL. While I am fairly comfortable with programming in R and using GitHub (I typically use the GUI), my only experience in the shell is when I learned the basics of navigating through directories from one of the SWC tutorials and I had never used SQL before.
When I relayed my concerns over how useful I would be as a helper to the two instructors, they reminded me that some experience is typically better than none. Also that my experience with programming has lead to my being able to work through fixing problems faster than people who are new to it.
Overall I felt like the SWC bootcamp was a great experience. Based on some of the feedback that the instructors got, it seems as if most of the participants also found the material both helpful and interesting. Most everyone learned something new, even if it was only about how to structure code in an organized and logical manner.
I will admit that I was a bit surprised by the content of the bootcamp. My expectation going in was that there was going to be a bit more actual coding in R than there was. In all we wound up spending about 3 hours (quarter of the total time) actually doing things in R. About equal time was then split between shell, git, and sql. Even though it was different than my expectation (and I was a little disappointed because I enjoy R coding so much) I thought that the workshop was wonderful. Everyone came away with at least some understanding of how to do things in the shell, a base knowledge that you can make files and run scripts all in the shell, an account with GitHub, ow to initialize and use git repos, understanding of data structures and manipulation of data in SQLite database manager, and how to run queries on your data to select subsets.
During the R portion of the workshop, participants were taught how to approach problem solving as a programmer. I think one of the good things that was done in this bootcamp was that creating custom functions was at the forefront of the lesson. In addition, the instructor showed how organizing their functions in a modular manner, building functions that complete small tasks and then wrapping these functions into another larger function, makes life easier. I thought that it was an especially useful introduction, especially since the group of participants tended to skew towards the novice level of programming knowledge.
Also, while I feel like they could have covered a bit more of what can be done with the R programming language, the instructors were able to use their course materials as examples in the git/GitHub portion of the bootcamp, so not only do all the participants have access to the (open source) teaching materials on the GitHub page, but they have a cloned copy of the repository locally on each of their machines. With the skills that they were taught in the two-day workshop they should now feel comfortable enough with the material to continue learning on their own. Looking through the material provided by the instructors there is enough there such that anyone who wants to learn more about programming in R can get quite far on their own.
I really liked being a part of the SWC bootcamp, and all the people involved were great. I am definitely going to have to be on the lookout for more opportunities to become a part of the organization.