My college requires students earning a bachelor's of science (BS) degree to take a CS course. Currently, they take the same course as CS majors: a typical Java 1 course. What would be a more useful course for students majoring in the life sciences (as almost all of our BS students are)? Some of the students hope to become doctors or veterinarians, others medical researchers.
While I truly love Java, it may not be the best choice here. Something with a lighter footprint in which small(ish) problems can be quickly solved. Python moves in that direction. Even AppleScript or an equivalent.
People in the life sciences have computational needs, but the small problems probably outweigh the big ones. A while ago, a course in Unix Shell programming (pipes and filters) would be the way to go.
But fundamentally, the course should be about problem solving. How do you conceptualize your problem, how do you decompose it into chewy bits? If you can get there, you can get someone with deeper tech skills to help you program it as needed.
Dare I suggest spreadsheet programming? It is pretty powerful actually, and solves many needs and also has some of the abstraction facilities we promote and some of the debugging requirements that we teach. Recursion is possible if you want to go wild.
I'll say upfront, I'm familiar with both life sciences and CS, but I've never applied one to the other.
In life sciences, computing is used for a lot of heavy processing. Stuff in genomics and molecular modeling, for example. It's not fast work. Efficiency, then, must be important for researchers to know about. The course you're designing should cover Big-O and and related topics in its discussion of algorithms.
That theory won't be much use if the researcher can't communicate with the computer. I'd say Java may not be the best language to use. The upside that's usually cited is that it's very common, and similar to other languages in industry, but these students aren't going to be professional programmers, so that doesn't really count for much here. With Java, you'll also be spending a lot of time teaching semantics about the language itself rather than CS principles; time you can't afford to waste if you get only a single course with these students. Alternatives: Python seems to be used more in science, and Ruby has a nice learning curve. Both are well-established languages with plenty of documentation and communities available online.
Doctors and vets who are frontline healthcare provider types rather than in-the-lab researcher types are more likely to be users of software than writers of it. Depending on specialty, they'll be dealing with assorted medical records suites and similar programs. They should understand principles of cybersecurity, including more technical things like how passwords really work (or, just as important, fail, e.g. lack of salting or e-mailing in plaintext) and what makes them important as well as less technical ones such as social engineering, which are often both easier and more effective.
(Thanks, xkcd 538.)
Doctors and researchers are already looking at images on computer screens a lot, and I don't think I'm predicting the future too much by saying that's only going to increase. Understanding how lossy compression works, or JPEG format tradeoffs, and why the "zoom in and clean that up" CSI magic from TV doesn't happen in real life could be useful.
Beyond all that, there are some fundamentals that everyone should know, life sciences or not. The basics of how a computer operates, so that it's not a mysterious magical process between pressing keys or tapping the screen and pixels lighting up. Some brief coverage of programming, algorithms and data structures. The fact that no matter how fast we make computers, there are some problems they can't solve, and we can prove that using math (even if you don't go through the proof itself).