Following up on the previous post about the way Paul Dubois organizes good practices as "defense in depth", we would really like to include a lecture on debugging that does more than present a few general rules like "make sure you know what the right output is supposed to be" or "divide and conquer". More specifically, we need an example that contains a handful of qualitatively different bugs that can be found in qualitatively different ways: one by a code analyzer, another using coverage ("Wait, why isn't the 'else' ever being executed?"), a third by unit testing, a fourth by differential comparison of pre-change and post-change output, a fifth using breakpoints and single-stepping, and so on. If you have such an example, or are willing to help us construct one, please let us know.
(And if you have ever wondered why it takes 35-40 hours to create an hour of instructional video, this is part of the reason: coming up with an example that can motivate and illustrate several related points is hard.)
Originally posted at Software Carpentry.