Having helped at two previous bootcamps (Oxford last year and UCL last month), a couple of weeks ago I had my first attempt at organising one at the University of Oxford, primarily aimed at students from the Doctoral Training Centres. Mario Antonioletti and Shoaib Sufi from the Software Sustainability Institute kindly did most of the instructing (I only ran two sessions), and Mario has already written a blog post with his perspective. Here I want to report the feedback we received from attendees and give some of my thoughts on the experience.
It took a while for registrations to get going - the vast majority signed up in the last week - but we had very few drop-outs before the event, with 30 attending the first day, and 24 still present at the end of the second. We did the traditional good point-bad point round-the-room feedback at that point, and got quite a few useful comments, shown below. I also sent round a more detailed questionnaire after the event which received 10 responses. All enjoyed the bootcamp, and rated it overall good or very good. They also all felt they learned something useful, would recommend such events to others, and think universities should run them as standard.
|Lectures good - not too fast||Issues getting pace correct for everyone|
|Covered basics well and included advanced topics||Some topics too easy|
|Selection of topics covered||Slightly too long on simple things in databases - more complex topics|
|Python good solid foundation||Intro Python too slow - too much basic programming|
|Documentation for the topics good, so could read the material to catch up||Version control too fast|
|Lots of topics, didn't get bored||Starting with version control - in at deep end - start simpler?|
|Sticky notes good idea||Version control not deep enough - need to explain concepts - what program actually does|
|Tech support from helpers great||Time management - wanted more Matlab|
|Examples very practical - could think how to apply them to my work||Include some theory behind Python - what important compared to other languages|
|Access to all the materials from the start and afterwards||Example used BitBucket but course materials on GitHub|
|Having sample code, e.g. seeing how other people implement tests||Databases needed more intro and context|
|Exercises good to learn from||Examples of big projects to explain the idea behind version control|
|Good balance of trying it yourself and lecturing||Using wrong programs on desktops - no cygwin|
|Everyone could see the screens||NumPy & SciPy not covered deeply enough|
|Number of demonstrators good - didn't have to wait for help||More comparison between Python and Matlab|
|Generally very helpful|
|Awesome that this is free|
I think we did pitch things generally at slightly too easy a level for our audience. This was particularly the case for the introductory Python session, which started quite slowly. Several responses to the questionnaire requested fewer topics but in more depth, with less time spent on the very basics. It was interesting to me that the students wanted more background to the topics taught, for instance comparing Python with other programming languages and discussing the kinds of problems for which it is particularly suited, or explaining the mental model and behind-the-scenes behaviour of Git.
There were also some differences in what attendees wanted out of the bootcamp. Some were particularly keen to learn Python, and they seemed to really appreciate what we covered. Others wanted more to improve their Matlab skills, and so were disappointed that the 'Software Carpentry in Matlab' session was squeezed by earlier sessions overrunning. I think they would probably have wanted a workshop devoted to covering the general principles entirely in Matlab without any Python, too.
The location in the Zoology Department worked very well for a bootcamp. It was a newly equipped suite designed for teaching computer based courses. There were thus desks with plenty of space for helpers to move behind attendees, and desktop thin clients for those who couldn't bring their own laptops (or had issues with their setup). Best of all, the instructor's screen could be projected on three walls of the room, so everyone could see a screen in front and to the side.
Most setup issues were caused by Enthought releasing Canopy between the installation instructions being written and the bootcamp occurring, so those attendees who didn't already have Python were faced with an installation that didn't match the instructions. The additional setup script for Windows users was also broken by paths changing. More annoying were some issues experienced with IPython on some machines, which we didn't get to the bottom of unfortunately. Pasting with %paste didn't work for some (%cpaste seemed to be an effective work-around), and tab completion was entirely absent on some systems.
We came across a few issues (and some good ideas) that might be helpful for future bootcamps to consider.
- Mario wrote 'recap slides' for the Git session, summarising where we had got to at different stages through the morning, and students found these helpful.
- Accessing BitBucket with Git led to SSL certificate issues on some machines. It's worth knowing the incantation to fix this if it happens to you (git config --global http.sslVerify 0).
- Students really found having all the material available at the start helpful.
- On that note, we should mention ipython's var.<tab> help system in the notes.
- In the testing session, we tried to get people to run Python scripts as commands by including a shebang line and setting the executable bit. Lots of people had issues following along here, and it would probably be better to run with e.g. python dna.py.
- We tried to do a longer practical exercise after the NumPy session. Much more time was needed for this! But I still think such an exercise, that includes dealing with basic Python datatypes and functions, is very valuable.
- Importing CSV files into the database is quite hard to follow along with. This is a general issue for any section that involves following button clicks and interactive dialogs. We benefitted from having a pre-canned database in the repository for anyone who gets too lost.
- Another aspect that some found difficult to follow was long bits of typing that weren't essential to understanding, for instance typing HTML sample files for the version control session.
There were a couple of other comments worth mentioning. One person wanted a topic on understanding pre-written code. Possibly going through a model solution to a longer exercise would be beneficial for this. Another person suggested splitting the workshop into half days on different topics, and letting attendees pick which they attend. I don't think this would work for normal bootcamps, but with particular audiences, especially those with more background in some topics, this might be a helpful approach.
But my favourite comment of all, in one questionnaire response, was: "In my opinion the best aspect of the course was the explanations given about new concepts by the very competent computer scientists who ran the bootcamp. This was especially true for Jonathan and Aron." I think that's a good note on which to end!