Hi everyone,
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 ;-)
As for students in biology I will always go tools-first, at least for the first course (which is ~30 hours here). Then for further courses I would go fundamentals.
A lot of students of biology (unfortunately) don't really care about programming, and may consider it as some kind of black magic. Taking them quickly to do things that "works" is essential to break the ice. And this is just what I think the first course is for: to give them the intuition of what programming is.
Then, for a biologist to take a second course of programming (this is not mandatory here) means he/she really wants to learn something, so we can raise up the bar and go fundamentals.
Hope this helps.