My approach to teaching mirrors the way I personally learn. Introducing fundamental principles along with very basic exercises provides students an opportunity to internalize the material and learn the necessary mechanics. Then, providing space for students extend these principles based on their own interests engages them in critical thinking and synthesizing their own new knowledge and experience. In the courses I teach, I try to follow this pattern, introducing new material with simple rote exercises, followed by more open-ended assignments that reinforce and extend on the basics.
I have been very pleased with the results of this approach. The average student comes away from my courses, at the very least, equipped with a new arsenal of tools they can leverage in their research, studies, or work. The motivated student comes away with the ability to reason about the material critically and to evaluate the much broader ecosystem of topics and related tools.
My teaching experience spans a variety of contexts (from lead instructor of semester-long courses to co-instructor of two-day workshops) and topics (from computational genomics to software engineering). I'm particularly interested in improving how computing is taught in biology (and other scientific disciplines), and have a firm conviction that biologists should get their first introduction to computing from other biologists.