After having been a teaching assistant for a year in introductory statistics courses, I’ve developed some thoughts about teaching that I wanted to share. The courses I helped with all had a discussion portion that I was in charge of, with some sort of software analysis component, either in R or SAS. The point I’m interested in is the balance of walking students through code in class, and the teaching of statistical concepts. The balance was pretty difficult for me to strike, and I’m not sure if the discussion section was as effective as it could’ve been. Was it really worth spending half of the discussion walking through each of the key words in the code, and explaining the output that was associated with the key words? Or is it more effective to spend more time looking at the output and linking the statistical concepts to the output?
How to teach software skills effectively?
In my opinion the best way to teach software skills is to do so passively, and hierarchically.
In my opinion the best way to teach software skills is to do so passively, and hierarchically. Students really need to be exploring and tinkering around with code themselves to really learn how this works. This is how I learned first how to code, through loads of goal oriented exercises, and essentially “googling as I go”. Most of this learning, and the most effective is done on my own. There’s nothing better than being able to access the exact information you need at the exact time that you need to use it. Thus, I think having a large, organized library of everything I need is the “passive” component of this.
I think it would be difficult to argue that (for a student) any form of group teaching is more effective than a personalized 1-1 situation. The reason for this is the teacher is able to tailor the level of teaching to the student. In fact, I would argue this is the best mode of teaching and the fastest way of learning for the student. I feel like this is the mode we should aim for, especially for technical software skills. I think especially with software skills, you will be presenting to an audience with a wide, wide array of background. Even if you teach to the “average” of experience, this will not be helpful to most of the students. “Average” is an arbitrary, man-made statistical notion. No student is “average” and so teaching to the level of the average student is really equivalent to teaching no one. Hence, if we are to teach individuals, the material should be hierarchical, in which a student looking at the material can either go deeper or more shallow in complexity of the topic, depending on their current level of understanding.
“No one is average”1
How do I make passive material that is hierarchical?
Links. Lots of links out to other resources and a well organized idea of the level that material is aimed at. If you are making a lot of material yourself, cross-linking within your own examples will help. If not, linking to more well established sources will help. I find a lot of statistical material is really poor at this idea (or maybe this problem is especially apparent in this field), and we could really do better as a community about this. It’s normally a big ask to sit through a long explanatory tutorial, or even a lecture. A lot of good material is tied up in textbooks, but these sorts of resources serve a different population. I think that there’s a reason why websites such as as Stack Overflow has been so successful in software related disciplines. Although technically the information is wrapped up in some documentation somewhere, it’s much, much easier to just have an immediate answer to your questions. Thus, at first, it makes sense to create many bite-sized chunks of information, that also makes it very clear where I should go for more information.