What Else for Software Carpentry?

16 lectures are now in place (more or less), which means I have 8 more to do. The syllabus shows what I’ve covered already; my current plans include:

  • unit testing
  • XML
  • SQL
  • more SQL
  • small-team development process

What do you think the other three should cover (keeping in mind that this is supposed to be a course on basic software engineering, rather than scientific programming)? Options include:

  1. Basic web programming, with much-revised versions of:
  2. Integration, including:
    • wrapping C code so that it can be called from Python
    • using popen() and its ilk to run external programs
    • (probably) something on refactoring to make code more testable (as per Feathers' excellent Working Effectively with Legacy Code
  3. Three lecture-length examples, building very simple versions of core tools that haven't been covered elsewhere:
    • data lineage
    • continuous integration
    • data consistency checking
  4. Give in, and do the scientific programming stuff anyway:
    • floating-point arithmetic
    • Python's Numeric package
    • data visualization
  5. Scrap the single lecture on development process, and put in four full lectures on the subject
    • XP
    • UML-based processes (probably ICONIX)
    • something else (not entirely sure what)
  6. Something else entirely --- suggestions would be very welcome.

Please let me know what you think.

In the wake of posts about Shopify's support for white nationalists and DataCamp's attempts to cover up sexual harassment
I have had to disable comments on this blog. Please email me if you'd like to get in touch.