I recently had an opportunity to teach at a Software Carpentry bootcamp at the University of Oklahoma in Norman, which took place between 01-02 July. The second instructor was Paul Ivanov - one of the main developers of IPython and a contributor to a number of other open source tools, such as matplotlib.
Thanks to the support of the host institution's OU Supercomputing Center for Education & Research, the bootcamp was open to any Oklahoma-based researcher who wished to attend, though most of the participants were students and faculty members. Event organiser Henry Neeman did an excellent job and made sure that everything was ready and in place when it was needed.
The participants formed a very mixed audience. There were several people who had never programmed and had no experience using shell. On the other hand there were attendees who routinely write advanced software in C or Fortan. In my experience, audiences with varied levels of skills are a common occurrence at the bootcamps so it's often a challenge to pitch at the right level, especially with modules such as the Introduction to Programming with Python. With that in mind, I decided it was better to pitch to the beginners in tone, even if that left some of the advanced learners feeling a little bored.
Later on, I found out that some of the advanced participants had in fact attended the bootcamp in order to learn how to teach programming in Python, being more interested in the material itself and how we delivered it than the programming itself.
One of the biggest advantages of the bootcamp in Oklahoma was the venue. It had several screens which meant that everyone, no matter where they sat, could clearly see everything that was displayed. The round tables, around which we could sit between 5 to 7 people, were an ideal arrangement, allowing the learners to collaborate and the helpers to easily move around and provide assistance.
Anther good thing was a monitor at one of the lecterns which allowed Paul and myself to set up our laptops for "dual display." This let us carry on with teaching while still having the instructor notes displayed on our laptops and the lectern monitor. Often this kind of setup is not available and the instructors are forced to make do with "mirror displays", which makes it difficult to peek at the instructor's cheat sheet.
Paul also tried out ttycast, which broadcasts what goes on in the terminal, for teaching shell. It worked pretty smoothly and I'll certainly try it out at future bootcamps.
At the end of the bootcamp one of the attendees told me that, thanks to the bootcamp, he was finally able to understand Git. Beforehand, he had struggled with it for several weeks trying out numerous tutorials but he was still lost. Apparently, Software Carpentry is doing something right!