Reflections on the value of teaching one-day introductory computer programming workshops
Reflections on the value of teaching one-day introductory computer programming workshops
Posted on 3 October 2017
Reflections on the value of teaching one-day introductory computer programming workshops
By Thomas Etherington, Senior Research Leader, Royal Botanic Gardens, Kew, and Institute Fellow.
As part of my Software Sustainability Institute Fellowship, and with support from the Royal Geographical Society, I recently organised an introductory programming workshop targeted specifically at geographers. In a previous blog, I outlined how I used a pre-workshop survey to try and design the content and structure of the workshop to be tailored towards the attendee’s needs as geographers. But I was still curious about just how effective a one-day introductory workshop can be in promoting the use of more sustainable software skills. Therefore, I asked for feedback from the workshop I organised, and have picked out what look like consistent themes across multiple participants that answer some questions I had around the value of such workshops.
Is there a need for introductory programming workshops?
“The reason I haven’t learned to program before is that I thought it was difficult and that required a considerable amount of time.”
“With no formal training in computer programming during my studies, I was left needing to acquire programming skills in the workplace, usually as a side venture, and often on my own time. This is a daunting task, requires a lot of time that one usually does not have and leaves a person more frustrated at the end than when they started.”
“learning computer-programming languages has been a major challenge that is dull and painful for me. This understanding started from attending a compulsory computer class on Visual Basic in secondary school. The early frustration deterred me from attending further computer science or programming courses in university.”
The results of the pre-workshop survey presented in my previous blog showed that there is at least some section of the geographical community that is not getting appropriate computer programming training as part of their formal education. This may well be changing, and there are certainly some geography departments in the UK that are focussing more on the importance of computer programming within the discipline. However, as these comments highlight, I suspect there will always be a section of the geographical community that would benefit from this kind of one-day introductory workshop.
Are in-person workshops necessary?
“The course run at RGS was ideally designed to provide access to tools, datasets, and knowledgeable instructors removed from the distractions of the typical office environment.”
“One of the basic mistakes I had is the misspelling of longitude into longtitude...”
“Having struggled to teach myself languages such as Python in the past—with the help of online training courses such as Coursera—, I was very grateful for the excellent course structure and the patient and helpful advice given by the three extremely knowledgeable demonstrators.”
There are obviously logistical complications and costs associated with running a workshop in person, so given the proliferation of freely available online material, there really does need to be a strong benefit to organising a workshop. I think these comments highlight that learning in person really helps people to efficiently get over the initial learning obstacles that can otherwise cause so much frustration, and commits you to focussing on the task at hand. This is something I can also relate to myself and have talked about in a previous blog that described how attending a training opportunity in person finally allowed me to learn Cython after some failed self-learning attempts.
Can a one-day workshop really have an impact?
“...for a one day course I felt I learned enough to begin to read and navigate the software, which for me is the most daunting aspect.”
“...I was able to, with the aid of three very helpful demonstrators write my very first script and perform so rudimental statistical analysis in R. These small but important successes were very pleasing and helped my believe that I was capable of carrying out tasks in computer programming...”
“The R workshop was a brilliant introduction into programming and has given me some confidence that I will be capable of using R for my data analysis in my thesis”
“The training has made aware of the importance of acquiring programming skills as a researcher and motivated me to continue learning to program.”
“This course provided me with a starting point for how to set up automated tasks using R, which I am certain will help to improve my productivity over the remaining duration of my studies.”
Clearly a one-day workshop is never going to be able to cover all the material that anyone of the attendees will ever need. So I was careful to emphasise that the goal of the workshop was to demystify programming enough for people so that they felt more confident and were better equipped to learn themselves after the workshop. It is hard to say whether making this point clear at the beginning of the workshop helped to set expectations for the attendees, but certainly these comments would indicate that just one-day of concentrated supportive learning can really make a difference to people’s confidence and motivation by getting them past the initial uncertainties and apprehensions.
Does incorporating domain relevance have learning value?
“I had only once previously spent a short amount of time trying to learn Python but the examples and data that were used were completely unrelated to geography and my work, and therefore I struggled to know if the results coming out were correct and the relationships that were shown in the data were real. By using geographical data, although not related to what my thesis is about, I could understand what was going on, why we were inputting what we did and I could understand the outputs.”
“As a geography student, I particularly enjoyed the aspect of the course which focused on spatial data.”
“Over the years there has been an increase in resources, particularly online, freely available. I have done a couple of these for R but these were often so basic that I was left that one-step too far from the task I needed to accomplish. It is rare to find start-to-finish detail in a specific task in the various online resources available.”
Domain relevance was a theme that I highlighted in my previous blog about how I would design my workshop to support geographers specifically. In doing so, this did mean I had to spend time adapting the workshop material I had developed previously to make it more directly relevant to geographers. Given the comments, I would conclude that this additional effort is worthwhile, and would encourage others to develop teaching materials with this is mind. Much of what needs to be taught in an introductory programming workshop would apply across any domain, so as long as you develop your materials in a modular fashion, it shouldn’t be too much extra work to then adapt the workshop to incorporate examples and data that will be of greater relevance to the target audience.
Does making the workshop more open have learning value?
“At the end of the session we had the chance to use our own data but have some help from the team which I found invaluable and it has given me confidence to go forward and learn to use R.”
“One thing I found helpful was not only working through the examples provided but also then having the time to modify those examples with criteria I typically find in my own work...”
“The workshop allowed me to not only perform tasks with the supplied data, but also carry out some basic mapping with my own data. To my surprise, I found R to be very enjoyable, and can see many opportunities to use these skills in the future.”
“I enjoyed that between them [the instructors], they had different ways to do things and it was totally to your preference as to how best achieve the desired outcome and this was a reflection of how R works and its capabilities.”
“I really appreciated the various approaches of doing some of the basic code writing that the three instructors brought to the day and knowing that there is more than one way to do things.”
There is definitely a balance to be struck here. To avoid complete chaos there does need to be some consistency about what people are doing and what data is being used. I tried to build in some openness by stressing that there are multiple ways of achieving the same result, and that there wasn’t a single solution to any of the exercises. This was actually quite helpful as inevitably the instructors proposed different solutions to different people which could be construed as confusing by the learners. I also started the day with everyone using the same data in the first session, then built in a choice of data in the second session. Finally, I ended the day with some time to breakout into smaller groups to discuss and experiment around common topics that were brainstormed over lunch. This seemed to work quite well, and the comments indicate that it was certainly appreciated by some. But with one instructor for every 3-4 attendees, I did have the kind of instructor-attendee ratio that would be needed to support such an activity.
How can attendees be better supported beyond the workshop?
“I would be interested if there are future workshops with more extensive content, such as image processing or spatial modelling, such as species distribution models.”
“It would have been great to have a more extensive course, potentially carried out over a couple of days, of even multiple single day events throughout the year aimed at different levels, allowing attendant to continually improve their skills.”
“team working can be useful for design and creating programming for larger set of analysis and application development. working in a team can help cross check and verify each other's common mistakes, and discussing the applicability and effectiveness with the target customers/ researchers. So instead of working on one's own, it would be valuable to form a team who shares similar levels of knowledge and skills of the subject area, shares the same goal/ vision/ mission, but might varied in advancement of R skill.”
“I have heard it often suggested that colleagues are a good resource for learning to program code. In my experience this is not always the case. Everyone is busy and while your colleagues may have the knowledge to accomplish a task, it does take more time and effort to teach this in a meaningful way so that you retain that knowledge.”
The end of a workshop always seems somewhat anti-climatic to me, as I simply have to wave goodbye to the attendees and at best give them some pointers to some potentially useful online material. So I am interested in what else if anything can be done to help support attendees after the workshop. Feedback from the attendees suggests there is a desire for more detailed and geographically specific workshops. This is perhaps no surprise, but there clearly is a challenge in trying to develop a whole series of workshops. Not only does this require more work from the community, but I would suspect that as the workshops get more advanced and specific, the target audience will get smaller, and there may be a diminishing trainer effort to learner benefit ratio. Efforts such as the Data Carpentry lessons could help with this, by providing a place for lessons to be developed, maintained, and hosted in a central location.
I would have hoped that colleagues in home institutions would be able to provide some support, and as one person commented, working in a team is a good way to learn to code. But another comment does highlight the challenges of relying on already busy colleagues. It might be that encouraging organisations to set up code clubs may be a good way to nurture sustainable software skills. Software Carpentry provides great advice about running workshops, so I wonder if developing advice on setting up something like code clubs would be something the Software Sustainability Institute could look at in the future.