I have a graduate degree in biochemistry. (This is not biology and there is some difference in e.g. the makeup of the people who choose each course. So please take my experience with the required amount of salt). Today I am a programmer.

Here are my tips on how biological sciences students work.

* They enjoy concepts. Biology is somewhat more abstract than the intro programming courses in the way it's taught in the early years, and biology students tend to be good at retaining and linking information.

* However, they can be very cautious. They tend to request clear instruction, and specific goals (given by the instructor).

* They're motivated by getting good grades

With that in mind, for an intro course, I would recommend a short intro on the use of programming/data science in real life science problems. Explain that for example, optimizing foodstuffs requires now advanced genetic understanding, that even breeding is targeted. If they're biochem students more than just biology you can bring up antibiotic resistance. This should be the very first class, because most biology students don't give a hoot about learning Python, but they care about doing good in the world. Plus it will give them material for when they become computational biology researchers and have to rehash this stuff for grant committees.

Next, some fundamentals. Variables, iteration. Do not introduce functions yet. For some reason I cannot fathom, even some quite advanced scientists seem to hate functions, to the benefit of really long scripts. They'll need to learn it eventually, but no need to put them off.

Build exercises. The exercises should be instructor-led and graded. They should include some practical exercises, however, if graded programming exercises are included students should either be given sample similar exercises (solved) during the lectures as ungraded practice or access to a TA for questions. Most of these people really care about their grades, so graded exercises with no practice intimidates them. The exercises can be small applications of fundamentals at first, however, keep them biology-related (The Game of Life grabbed me personally in my first CS course, otherwise you can do things like make them write an R program to display a scatterplot and then fit a line on a set of data from lab experiments that will then reveal a chemical or biological law they have seen in their other courses. Counts of bacteria after N days, that sort of thing.)

Introduce some things that are not fundamentals for most CS students, but that should be for computational biology. Like regular expressions. Regexp are more fundamental to biology than e.g., scoping and functions. Actually, basic data structure instruction (lists and tables/hashtable, concepts of databases and records) are also very important.

For each concept, provide lists of solved problems or an automatic interface where they can type code and see solutions if they're stuck, like all natural science students get in problem sets. Programming instruction typically requires a lot more initiative than science students are comfortable with, and gives a lot less guidance; students are left on their own with the machine, and they have to "figure out" what works and why it doesn't. In science, students have textbooks with toy problem sets and solutions, and those help build confidence. Jupyter notebooks can be great for this but just make sure to stay within a concept and not include too many packages/APIs/problem definitions at once.

A lot of comp bio instructors think their students have to know Linux, know how to use a DNA aligner, learn Python and R, and be able to independently write programs from scratch to use CS in biology. They don't. They need linear regression and databases. If you get students that take several courses in the sequence, then you know they are more "tech-savvy" and interested in tech for its own sake, and you can build up all the tools. But often tools-based approaches suffer from introducing too many tools, for too few reasons.

So I guess I am advocating an hybrid tools-fundamentals approach that takes a very focused, very thin slice of fundamentals, and the tools they apply to, and solve a number of very small, "easy" quantitative real-world problems. And then in follow-up courses, build on that. Build bridges as well with your CS department so that you can direct students who want to learn deeper, more technical topics, and if you have research talks at your institute that talk about real research facilitated by computational methods, and how those are used (esp given by grad students) then recommend those to your more interested undergrads.

Edited to add: This applies to my observations of biological science undergrad and grad students in the US and Canada. I haven't been to uni in Europe but know people who have been and instruction there (for all degree programs) is so different that recommendations on course formats are useless. For example European and Asian students in STEM are usually pretty good at math, even if their degree program doesn't have math courses, and less turned off by formulas and heavier fundamentals.