Motivating (Public Health) Students to Learn (Python) Programming

Feb 24, 2014 • Daniel Chen

How do you motivate students and get them excited about the topic you’re about to cover, and make them believe that they can learn it, and want to learn it?

This has been a question I have been pondering over for a good part of the past few weeks.  Essentially it comes down to:

  • Put it in context
  • Show humility
  • Walk through the process of solving a problem and looking things up

I will be running an intro to python programming workshop on 2014-03-01, and getting people motivated and engaged will make the entire experience more meaningful for everyone.
The workshop is part of a 3 day series where we will

  • go over the assumptions of an agent-based model (day 1),
  • learn the basics of programming (day 2 — ME!), and finally,
  • diving into the ABM code (day 3).

Inherently a lot of my ‘motivation’ work has been cut out for me. That is, motivating by catering how you contextualize the idea of ‘what can programming do for you?’ to who your audience is.

I am by no means a great python programmer; I am very far from being one.  However, I can say I do know more than someone who has never seen python code in any way, shape, or form.  I think this gives me an advantage to teaching and motivating since I am so close to the beginners, that I remember the struggles of learning some of the core concepts.

Putting yourself in a beginner’s shoes is great, but it’s important for instructors to show some humility so students are not intimidated to ask ‘stupid questions’.  Nobody knows everything, and after helping out on a couple of swc workshops, it is nice to know that sometimes instructors need to google things; doing it in front of the entire class will bring you down-to-earth.  At least that’s how I feel.

For my portion of the workshop, my main form of motivation will be properly contextualizing the examples.  One can teach flow-control and use these examples:

http://teaching.software-carpentry.org/2014/02/11/mcq-python-flow-control/

but I am hoping to put everything into context by analysing some ‘patient data’ I will live generate from the class.

I think another point of motivation for the extreme novices, is giving them time to work through the problems.  My first programming class was in high school, where we covered netlogo, scheme (list), and python.  The main reason why I never majored in computer science in college was because there were students who were so easily and quickly able to solve the problems our teacher presented in class.  I felt that if that is how quickly, efficient, and elegantly people who do computer science need to come up with simple algorithms, I could never compete.

I probably have nothing to add to how swc runs their workshops.  They conceptualize (to the best of their ability) why programming and writing functions to reduce repetitions in code is good.  And the stickies down before doing and exercise, and green-sticky-up when you finish gives instructors time to help those who are struggling with problems.

Ultimately, if students end up programming or automating their next task, they are motivated enough to continue self-learning.

our goal