Feedback from the bootcamp at Istituto Nazionale di Fisica Nucleare in Pisa
The bootcamp in Pisa was not restricted to just the students of the University of Pisa and we even had one attendee who came all the way from Turin. Judging from the pre-bootcamp questionnaire the audience knowledge was on approximately the same level (and it was an advanced level!). All participants had a good grasp of programming concepts and many had extensive experience as programmers using more than one language. What was interesting however was the fact that their skills in using command line varied quite significantly. A few participants were almost completely unfamiliar with shell, others used it but if a rather limited scope and some were clearly very knowledgeable and comfortable with commands and scripting. This meant that Rémi had a particularly difficult task teaching command line trying to accommodate for the varied audience. Managing expectations was the key thing in this situation and we explicitly said that Software Carpentry pitches at the level of the least advanced part of the audience. The more advanced participants could progress further working with the additional material which was linked to the bootcamp website.
The version control module was easier to teach for two reasons: firstly, the vast majority of the audience did not know it hence everyone had the same starting point and secondly, it turned out that everyone was a LaTeX user which quickly helped to demonstrate usefulness of version control not only for source code but also for collaborative paper writing. The most exciting and engaging part of the version control module was, as usual, the final exercise when the students paired up to work on one shared repository on GitHub.
The bootcamp then continued with programming with Python. The (fairly) new materials which start with data analysis using NumPy rather than a plain introduction to concepts such as a variable or a loop fitted the audience in Pisa very well. As mentioned, all of them had programming experience and a very basic introduction would simply be boring for them. Using NumPy for data analysis was far more engaging and convincing.
The second day of the bootcamp started with more programming with Python. Rémi covered a more detailed module focusing on NumPy and SciPy. Then Aleksandra taught introduction to testing. The bootcamp finished with an exercise during which the attendees had to fork a repository containing an IPython Notebook file which contained code that needed to be fixed and developed further. Once the task was completed the students had to send a pull request and some of them!
It's worth to mention that the bootcamp in Pisa started with an extra day. The morning included introductions and a lecture "Track trigger and applications beside particle physics" In the afternoon the students could consult their setup settings with the instructors. Having these extra few hours the day before the actual bootcamp kicked off to make sure that everything has been correctly installed saved us the usual issues with "something not working" over the next two days.
Teaching at Software Carpentry bootcamps is usually very rewarding when students leave positive feedback. The good side of teaching more advanced audience is that they can often immediately see the application and the benefit of using the skills which they learn during the bootcamp. Just like one of the participants in Pisa tweeted: I still can't figure out how I managed to write all the thousands lines of code without Git. Huge thanks to @swcarpentry!!