BMEG 220 is an introduction to programming fundamentals with problems drawn heavily from biomedical engineering topics. I only taught the course once, but made some significant changes including writing a textbook that has since been published by Morgan and Claypool. I also including a semester-long student-driven programming project that was presented at the ASEE 2010 conference.
I also have explored the idea of "Coding to Think". This is analogous to the "Writing to Think". In both, the activity (Coding or Writing) is meant to help the student think more deeply about a concept. In the coding world this would be a way for a student to dive into a particular concept by trying to model it. The key is that model is something that they have thought of themselves; they need to move from Idea to Code. In the process, they need to be clear about the data structures, parameters, algorithms and user input - topics that are often . For more information and some examples from the class, see the ASEE paper below.