I work at a university institute of computational biology. Besides doing research, we also teach quite a few courses for biology students, many of which include an introduction to programming (mostly with R, but also Python). We have a long-standing debate as to what the best approach to this is, and I would like to hear some of your opinions on the matter.
Basically, we have two factions: the "tools-first" and the "fundamentals-first" approach. The supporters of "tools-first" argue that we are teaching biologists, not software developers. They like to teach the specific tools (languages, libraries, functions, etc.) that our students are actually going to need as quickly as possible. To cover as much ground as possible, they are willing to sacrifice a deeper understanding of programming.
The "fundamentals-first" faction would prefer to do it the other way around: instead of teaching a load of commands to learn by heart, they would rather take more time to develop a programming mindset. They are willing to sacrifice how much content course participants learn, if it means that they learn how to program properly and fully understand how a given language works (with its variables, functions, scoping, etc.). Their argument is that once you have understood the concept, teaching yourself the content is easy (GIYF); whereas the reverse is much harder.
What do you think? I would be especially interested in the opinions of other computational biologists ;-)