The New MATLAB Teaching Materials
Fortunately for the Software Carpentry community, the instructors from that event have subsequently written up their teaching materials and made them freely available via a CC-BY (Creative Commons - Attribution) license (there's been some issues with the FTP site where those materials are located, so in the meantime you can find a copy here at the Research Bazaar GitHub repo). There's still some debate as to whether the ongoing maintenance and development of these materials should be supported by Software Carpentry or MathWorks (because unlike Python and R, Matlab is proprietary software), but in the meantime demand has been so strong in Melbourne that we went ahead and organised a bootcamp as soon as we could get our hands on the teaching materials.
Our August bootcamp at the University of Melbourne filled the 45 seat room and had a further 25 on the waiting list. On the first day we taught the new Matlab lessons, while on the second we covered the standard Software Carpentry lessons on the shell and version control. In other words, Matlab was used to teach programming, while the shell and version control were pitched as tools to manage your code and data effectively.
What I've tried to do below is distill the main comments/feedback received from instructors, helpers and participants. For more detailed commentary, see the relevant GitHub issue. At times these comments may sound critical, but it should be kept in mind that these Matlab lessons are brand new. Unlike the current Python lessons, they haven't had the luxury of years of development using feedback from hundreds of bootcamps. At the end of the day, the participants at our bootcamp got the undivided attention of eight Matlab gurus for two whole days (thanks to all the helpers who came along). Such dedicated programming assistance is unheard of in the academic world, and consequently this unique learning experience was greatly appreciated by all who attended.
Comments:
- The Matlab materials provide approximately two challenges for each of the four main
lessons (see here).
These challenges are very well documented (i.e. the relevant data files and answers
are all conveniently contained in an
Exercises
directory), however their completion requires the participants to be familiar
with all the content in the associated lesson. Since each lesson
involves up to an hour of live coding/demonstration, the bootcamp involved very long
periods of demonstration followed by challenges that also took a very long time to
complete. This not only made it difficult for participants to maintain concentration,
but it also meant that there were long periods where the helpers weren't really
involved in the action.
- There are shorter recommended activities scattered throughout the teaching notes, but these often ask the participants to do something they've never seen before (e.g. one of the recommended activities asks the participants to define a function, even though at that point the instructor hasn't even demonstrated the associated syntax and typical use cases). Our instructors therefore used those recommended activities as examples that they themselves could demonstrate to the audience.
- Unlike the novice Python lessons, there's isn't a consistent data analysis story weaved throughout the four Matlab lessons. As a consequence, the data analysis examples seem a little disjointed.
- The Matlab lessons and challenges escalate in complexity very quickly. In Software Carpentry terminology, they are definitely "intermediate" as opposed to "novice" level materials.
- One useful feature of the Python lesson materials is that the instructor notes are essentially written as a verbatim script of what an instructor could/would say at each point of the bootcamp. This makes things much easier for new instructors, because there is no ambiguity about how the materials could/should be delivered. While the Matlab materials provide significant guidance (i.e. they're not far off), they cannot be used as a verbatim script.
Going forward, I think these Matlab materials should be designated as our current intermediate level lessons, with a view to addressing the comments above in the coming months/years (i.e. shorter and more regular challenges, a verbatim script to help new instructors, a consistent data analysis example throughout, and a number of other small fixes outlined in the GitHub issue). As a starting point for a set of novice level Matlab lessons, I would suggest we simply re-write the current Python lessons using Matlab. Isabell Kiral-Kornek (one of the instructors from our bootcamp) jumped in and made a start on this task right away (see here), and in the process of writing this post I was alerted to the fact that Ashwin Srinath has also made a start on precisely the same task (see his code and discussion). They've each taken a slightly different approach to the re-write (i.e. comparing and combining their materials will result in a better final product), however to avoid such duplication of effort in the future we've setup a Matlab mailing list in order to keep the community updated with our progress.
Once Ashwin and Isabell (and anyone else who'd like to get involved) have completed the re-write, the Software Carpentry Matlab materials will resemble the current state of the R materials: the novice lessons will be a clone of the Python lessons, while the intermediate lessons are an independent set. This development pattern seems reasonable in that similar lessons are appropriate for novice learners no matter the language, whereas the teaching of more complex topics quickly becomes more language specific.
If you would like to join the discussion about development of MATLAB materials, please add yourself to this mailing list.